Android - 如何更改默认的SeekBar厚度?

Joe*_*mov 28 android seekbar android-seekbar

我有这个SeekBar:

        <SeekBar
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="26dp"
        android:id="@+id/seekbar"
        android:visibility="gone"
        android:maxHeight="3dp"/>
Run Code Online (Sandbox Code Playgroud)

我试图使用maxHeight更改此SeekBar厚度.但没有改变.它看起来像这样:

在此输入图像描述

我想将此SeekBar的厚度更改为3dp,并使其如下所示: 在此输入图像描述

所以我的问题是有可能以某种方式改变SeekBar厚度吗?如果有,怎么样?

Vai*_*ani 30

你必须改变progressDrawablethumbSeekBar来调整它的厚度:

<SeekBar
    android:id="@+id/seekBar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/indSeekBar"
    android:layout_marginTop="48dp"
    android:progressDrawable="@drawable/seek_bar"
    android:thumb="@drawable/seek_thumb"
    />
Run Code Online (Sandbox Code Playgroud)

添加drawable文件夹seek_bar.xml:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background">
        <shape
            android:shape="line">
            <stroke
                android:color="@color/seek_bar_background"
                android:width="@dimen/seek_bar_thickness"/>
        </shape>
    </item>

    <item android:id="@android:id/progress">
        <clip>
            <shape
                android:shape="line">
                <stroke
                    android:color="@color/seek_bar_progress"
                    android:width="@dimen/seek_bar_thickness"/>
            </shape>
        </clip>
    </item>

    <item android:id="@android:id/secondaryProgress">
        <clip>
            <shape
                android:shape="line">
                <stroke
                    android:color="@color/seek_bar_secondary_progress"
                    android:width="@dimen/seek_bar_thickness"/>
            </shape>
        </clip>
    </item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

seek_thumb.xml:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <size
        android:height="@dimen/seek_bar_thumb_size"
        android:width="@dimen/seek_bar_thumb_size"
        />
    <solid android:color="@color/seek_bar_progress"/>
</shape>
Run Code Online (Sandbox Code Playgroud)

添加到维度资源(更改此项以调整厚度):

<dimen name="seek_bar_thickness">4dp</dimen>
<dimen name="seek_bar_thumb_size">20dp</dimen>
Run Code Online (Sandbox Code Playgroud)

添加颜色资源:

<color name="seek_bar_background">#ababab</color>
<color name="seek_bar_progress">#ffb600</color>
<color name="seek_bar_secondary_progress">#3399CC</color>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • @stevendesu 在值资源文件夹中创建文件dimens.xml,从技术上讲,您可以在 &lt;resources&gt; &lt;/resources&gt; 标记中包含的值文件夹中的任何 XML 文件中声明任何字符串、颜色、维度资源 (3认同)

小智 8

你应该这样做:

<SeekBar
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:thumb="@drawable/seek"
    android:progressDrawable="@drawable/seek_style"
    />
Run Code Online (Sandbox Code Playgroud)

拇指是可以拖动的圆圈,progressDrasable是进度的样式.

seek_style.xml:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background">
        <shape>
            <corners android:radius="5dip" />
            <gradient
                android:startColor="#ff9d9e9d"
                android:centerColor="#ff5a5d5a"
                android:centerY="0.75"
                android:endColor="#ff747674"
                android:angle="270"
                />
        </shape>
    </item>

    <item android:id="@android:id/secondaryProgress">
        <clip>
            <shape>
                <corners android:radius="5dip" />
                <gradient
                    android:startColor="#80ffd300"
                    android:centerColor="#80ffb600"
                    android:centerY="0.75"
                    android:endColor="#a0ffcb00"
                    android:angle="270"
                    />
            </shape>
        </clip>
    </item>

    <item android:id="@android:id/progress">
        <clip>
            <shape>
                <corners android:radius="5dip" />
                <gradient
                    android:startColor="#ff0099CC"
                    android:centerColor="#ff3399CC"
                    android:centerY="0.75"
                    android:endColor="#ff6699CC"
                    android:angle="270"
                    />
            </shape>
        </clip>
    </item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

seek.xml:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
    <size
        android:width="20dp"
        android:height="20dp"
        />
    <solid android:color="#60f0"/>
</shape>
Run Code Online (Sandbox Code Playgroud)


Gab*_*tti 5

您可以使用Slider材料组件库提供的 。

使用app:trackHeight="xxdp"(默认值为4dp)更改轨迹栏的高度。

    <com.google.android.material.slider.Slider
        app:trackHeight="12dp"
        .../>
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

如果您还想更改拇指半径,您可以使用该app:thumbRadius属性:

        <com.google.android.material.slider.Slider
            app:trackHeight="12dp"
            app:thumbRadius="16dp"
            ../>
           
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

它需要库的1.2.0版。