【问题标题】:Vertical slider in android using google material libraryandroid中的垂直滑块使用谷歌材料库
【发布时间】:2020-11-20 00:28:52
【问题描述】:

我有这个谷歌材料滑块在水平方向对齐:

<com.google.android.material.slider.Slider
    android:id="@+id/slider_tilt"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_above="@+id/tilt_btn"
    android:layout_marginBottom="20dp"
    android:layout_marginTop="10dp"
    android:layout_marginHorizontal="65dp"
    android:valueFrom="-4"
    android:valueTo="4"
    android:stepSize="0.5"/>

但我希望它处于垂直方向并与屏幕左侧对齐。我尝试旋转它,但无法获得左侧对齐,如果有出路,请告诉我。

【问题讨论】:

    标签: java android android-layout


    【解决方案1】:
    
            <FrameLayout
                android:layout_width="32dp"
                android:layout_height="200dp"
                android:layout_gravity="center"
                android:orientation="vertical">
    
                <com.google.android.material.slider.Slider
                    android:id="@+id/sldPenWidth"
                    android:layout_width="200dp"
                    android:layout_height="32dp"
                    android:layout_gravity="center"
                    android:rotation="270"
                    android:value="1"
                    android:valueFrom="0.1"
                    android:valueTo="10" />
    
            </FrameLayout>
    

    将 attr android:rotation 值设置为270,然后放入FrameLayout中

    【讨论】:

    • 对我有用,但 FrameLayout 不需要 layout_gravity(只需 Slider)。
    【解决方案2】:

    现在我有这样的东西:

    class VerticalSlider @JvmOverloads
    constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0)
        : com.google.android.material.slider.Slider(context, attrs, defStyleAttr) {
        init {
            rotation = 270f
        }
    
        override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
            super.onMeasure(heightMeasureSpec, widthMeasureSpec)
        }
    }
    

    我还是得把它包起来:

       <FrameLayout 
                android:layout_width="match_parent"
                android:layout_height="match_parent">
    
           <....VerticalSlider
                style="@style/InstSliderWhiteMatchWrap"
                android:layout_marginTop="10dp"
                android:layout_marginBottom="10dp"
                android:value="100"
                app:haloRadius="15dp"
                app:thumbRadius="9dp" />
    
        </FrameLayout>
    

    我对 haloRadius 有疑问,必须将其设置为较低的值才能不显示硬线,看起来布局边距没有正确考虑,我尝试了很多东西......否则这种方式更具可读性和可重用性对我来说。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-09
      • 2016-01-25
      • 2015-11-16
      • 1970-01-01
      • 1970-01-01
      • 2017-08-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多