Android - 如何更改默认的 SeekBar 厚度?
Android - How to change default SeekBar thickness?
我有这个 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"/>
我尝试使用 maxHeight 更改此 SeekBar 厚度。但是什么都没有改变。它看起来像这样:
我想将这个 SeekBar 的粗细更改为 3dp 并使它看起来像这样:
所以我的问题是可以通过某种方式改变 SeekBar 的厚度吗?如果是,如何?
您可以使用属性 minHeight
和 maxHeight
更改搜索栏的粗细
android:minHeight="5dp"
android:maxHeight="5dp"
这是我在您的xml中的做法:
<SeekBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="26dp"
android:id="@+id/seekbar"
android:visibility="gone"
android:minHeight="5dp"
android:maxHeight="5dp"/>
你应该这样做:
<SeekBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:thumb="@drawable/seek"
android:progressDrawable="@drawable/seek_style"
/>
thumb是可以拖动的圆圈,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>
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>
您必须更改 SeekBar
的 progressDrawable
和 thumb
来调整它的粗细:
<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"
/>
添加到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/secondaryProgress">
<clip>
<shape
android:shape="line">
<stroke
android:color="@color/seek_bar_secondary_progress"
android:width="@dimen/seek_bar_thickness"/>
</shape>
</clip>
</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>
</layer-list>
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>
添加到尺寸资源(更改此以调整厚度):
<dimen name="seek_bar_thickness">4dp</dimen>
<dimen name="seek_bar_thumb_size">20dp</dimen>
添加颜色资源:
<color name="seek_bar_background">#ababab</color>
<color name="seek_bar_progress">#ffb600</color>
<color name="seek_bar_secondary_progress">#3399CC</color>
我解决了这个问题:
android:scaleX="2"
只需为搜索栏高度设置 scaleY,并设置 padding 以移除外部填充。
<androidx.appcompat.widget.AppCompatSeekBar
android:id="@+id/seekbar"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:paddingStart="0sp"
android:paddingTop="0sp"
android:scaleY="3" />
您可以使用 Material 组件库提供的 Slider
。
使用app:trackHeight="xxdp"
(默认值为4dp
)改变轨迹条的高度。
<com.google.android.material.slider.Slider
app:trackHeight="12dp"
.../>
如果您还想更改拇指半径,您可以使用 app:thumbRadius
属性:
<com.google.android.material.slider.Slider
app:trackHeight="12dp"
app:thumbRadius="16dp"
../>
它需要库的版本 1.2.0。
我有这个 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"/>
我尝试使用 maxHeight 更改此 SeekBar 厚度。但是什么都没有改变。它看起来像这样:
我想将这个 SeekBar 的粗细更改为 3dp 并使它看起来像这样:
所以我的问题是可以通过某种方式改变 SeekBar 的厚度吗?如果是,如何?
您可以使用属性 minHeight
和 maxHeight
android:minHeight="5dp"
android:maxHeight="5dp"
这是我在您的xml中的做法:
<SeekBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="26dp"
android:id="@+id/seekbar"
android:visibility="gone"
android:minHeight="5dp"
android:maxHeight="5dp"/>
你应该这样做:
<SeekBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:thumb="@drawable/seek"
android:progressDrawable="@drawable/seek_style"
/>
thumb是可以拖动的圆圈,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>
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>
您必须更改 SeekBar
的 progressDrawable
和 thumb
来调整它的粗细:
<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"
/>
添加到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/secondaryProgress">
<clip>
<shape
android:shape="line">
<stroke
android:color="@color/seek_bar_secondary_progress"
android:width="@dimen/seek_bar_thickness"/>
</shape>
</clip>
</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>
</layer-list>
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>
添加到尺寸资源(更改此以调整厚度):
<dimen name="seek_bar_thickness">4dp</dimen>
<dimen name="seek_bar_thumb_size">20dp</dimen>
添加颜色资源:
<color name="seek_bar_background">#ababab</color>
<color name="seek_bar_progress">#ffb600</color>
<color name="seek_bar_secondary_progress">#3399CC</color>
我解决了这个问题: android:scaleX="2"
只需为搜索栏高度设置 scaleY,并设置 padding 以移除外部填充。
<androidx.appcompat.widget.AppCompatSeekBar
android:id="@+id/seekbar"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:paddingStart="0sp"
android:paddingTop="0sp"
android:scaleY="3" />
您可以使用 Material 组件库提供的 Slider
。
使用app:trackHeight="xxdp"
(默认值为4dp
)改变轨迹条的高度。
<com.google.android.material.slider.Slider
app:trackHeight="12dp"
.../>
如果您还想更改拇指半径,您可以使用 app:thumbRadius
属性:
<com.google.android.material.slider.Slider
app:trackHeight="12dp"
app:thumbRadius="16dp"
../>
它需要库的版本 1.2.0。