我正在尝试实现一个搜索栏,它具有不同的进度颜色来表示进度
我想要实现的是这样的
但我最终得到的是这个
你可以看到进展淡蓝色img没有越过深蓝色线 img
这两个都是png图像
搜索栏的XML
<SeekBar
android:id="@+id/custom_seekBar"
android:layout_width="365dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="-12dp"
android:max="100"
android:paddingLeft="7dp"
android:paddingRight="20dp"
android:progressDrawable="@drawable/progress_background_selector"
android:thumb="@drawable/slider_button" />
机器人:progressDrawable =&#34; @可绘制/ progress_background_selector&#34;引用这个xml
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@android:id/background"
android:drawable="@drawable/normal_slider_bg"/>
<item android:id="@android:id/secondaryProgress">
<scale
android:drawable="@drawable/normal_slider_bg"
android:scaleWidth="100%" />
</item>
<item android:id="@android:id/progress">
<scale
android:drawable="@drawable/selected_slider_bg"
android:scaleWidth="100%" />
</item>
</layer-list>
答案 0 :(得分:0)
使用.setProgressDrawable
更改颜色{Reference}
<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="@color/progress_start"
android:endColor="@color/progress_end"
android:angle="270" />
</shape>
</clip>
</item>
</layer-list>
答案 1 :(得分:0)
public class LSeekBar extends SeekBar {
public LSeekBar (Context context) {
super(context);
Initialise();
}
public LSeekBar (Context context, AttributeSet attrs) {
super(context, attrs);
Initialise();
}
public LSeekBar (Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
Initialise();
}
private void Initialise(){
this.setProgressDrawable(getResources().getDrawable(
R.drawable.seek_bar_background));
}
}
----&gt; seek_bar_background(make in drawable)
<item android:id="@android:id/background">
<nine-patch
android:src="@drawable/progress_cyan"
>
</nine-patch>
</item>
<item android:id="@android:id/progress">
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<clip>
<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/progress_red"
/>
</clip>
</item>
</layer-list>
</item>
normal_slider_bg在你的情况下它应该是nine-patch。
======&gt; SeekBar为
<com.TestView.views.LSeekBar
android:id="@+id/seekBar1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:maxHeight="6dip"
android:minHeight="6dip"
android:paddingBottom="10dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="10dp"
android:thumb="@drawable/thumbler_small"
android:layout_toLeftOf="@+id/imageButton2"/>