Android 如何设置自定义seekbar';s ProgressDrawable大小小于ProgressBackground
我有一个定制的Android 如何设置自定义seekbar';s ProgressDrawable大小小于ProgressBackground,android,android-layout,Android,Android Layout,我有一个定制的seekbar不太好用 我希望seekbar看起来像这样: 但这是我所能做到的最接近的 忽略轻微的颜色和大小问题,我遇到的问题是绿色的进度大小。有没有办法使它比背景小?我试过在XML中添加size和padding标记,甚至试过用clipgravity来摆弄两个彼此重叠的矩形,但还没有成功 这是我的Seekbardraawable <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="
seekbar
不太好用
我希望seekbar
看起来像这样:
但这是我所能做到的最接近的
忽略轻微的颜色和大小问题,我遇到的问题是绿色的进度
大小。有没有办法使它比背景小?我试过在XML
中添加size
和padding
标记,甚至试过用clipgravity
来摆弄两个彼此重叠的矩形,但还没有成功
这是我的Seekbar
draawable
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
<shape android:shape="rectangle">
<corners android:radius="20dp" />
<solid android:color="@color/fofo_grey" />
</shape>
</item>
<item android:id="@android:id/progress">
<clip>
<shape android:shape="rectangle">
<corners android:radius="20dp" />
<solid android:color="@color/signup_green" />
</shape>
</clip>
</item>
</layer-list>
以及布局片段中的Seekbar
<SeekBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/seekBar"
android:layout_below="@+id/textView6"
android:layout_centerHorizontal="true"
android:splitTrack="false"
android:progressDrawable="@drawable/custom_seekbar"
android:thumb="@drawable/thumb_seekbar"
android:max="100"
android:progress="50"
android:indeterminate="false" />
已设法解决此问题。真不敢相信我花了这么长时间才想出解决办法
<clip>
<shape android:shape="rectangle">
<stroke android:color="@color/fofo_grey" android:width="6dp"/>
<corners android:radius="20dp" />
<solid android:color="@color/signup_green" />
</shape>
</clip>
添加了一个与背景元素颜色相同的笔划
,并调整了笔划
宽度,以达到所需效果
只需在seekbar drawable中添加笔划属性即可更改高度进度drawble,只需在布局中添加
android:minHeight=“2dp”
和android:maxHeight=“2dp”
更新:
<androidx.appcompat.widget.AppCompatSeekBar
android:id="@+id/seekBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:max="100"
android:minHeight="2dp"
android:maxHeight="2dp"
android:background="@android:color/transparent"
android:progressDrawable="@drawable/sb_progress_drawable"
android:progress="0"
android:secondaryProgress="0"
android:thumbOffset="0dp"
android:thumb="@drawable/sb_thumb" />
sb_progress_drawable.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@android:id/background">
<shape android:shape="rectangle">
<solid android:color="#26FFFFFF"/>
</shape>
</item>
<item android:id="@android:id/secondaryProgress">
<scale
android:scaleWidth="100%" >
<shape android:shape="rectangle">
<solid android:color="#26FFFFFF"/>
</shape>
</scale>
</item>
<item android:id="@android:id/progress">
<scale
android:scaleWidth="100%" >
<shape android:shape="rectangle">
<solid android:color="#FFFFFF"/>
</shape>
</scale>
</item>
</layer-list>
sb_thumb.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
<size android:width="20dp" android:height="20dp" />
<solid android:color="#FFFFFF" />
</shape>
SeekBar SeekBar=(SeekBar)findViewById(R.id.SeekBar);seekBar.设置刻度(2f);seekBar.setScaleX(2f);恐怕这里运气不好,这使得整个Seekbar
变得巨大。谢谢David,我在自己的答案中找到了这个解决方案。我会把你的标记为被接受,因为你是有钱人。我写了同样的代码,但progressDrawable没有改变。会做什么?什么是pseekbar xml?这根本没有回答问题,不知道为什么它有这么多选票。哇!接得好!谢谢
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
<size android:width="20dp" android:height="20dp" />
<solid android:color="#FFFFFF" />
</shape>