drawable xml 形状颜色动态变化
drawable xml shape color change dyanamically
我正在使用SeekBar
,我需要在列表中使用不同颜色的SeekBar
进度。
所以我需要以编程方式更改可绘制形状的颜色
这是抽屉xml。
seekbar_points.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"
android:drawable="@drawable/points_bg" />
<item android:id="@android:id/progress">
<clip android:drawable="@drawable/points_progress" />
</item>
</layer-list>
points_progress.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line">
<stroke android:width="6dp" android:color="@color/colorAccent" />
</shape>
points_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line">
<stroke android:width="6dp" android:color="@color/color7" />
</shape>
我必须动态地改变这个绿色区域。为此,我在 xml
中设置了颜色 points_progress.xml
请提出想法
提前致谢....
使用这个:
seekBar.getProgressDrawable().setColorFilter(ContextCompat.getColor(сontext, R.color.color_new), PorterDuff.Mode.SRC_IN);
更新:
如果只想更改进度区域的颜色:
LayerDrawable progressDrawable = (LayerDrawable) seekBar.getProgressDrawable();
Drawable filledDrawable = progressDrawable.findDrawableByLayerId(android.R.id.progress);
filledDrawable.setColorFilter(ContextCompat.getColor(сontext, R.color.color_new), PorterDuff.Mode.SRC_IN);
我正在使用SeekBar
,我需要在列表中使用不同颜色的SeekBar
进度。
所以我需要以编程方式更改可绘制形状的颜色
这是抽屉xml。 seekbar_points.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"
android:drawable="@drawable/points_bg" />
<item android:id="@android:id/progress">
<clip android:drawable="@drawable/points_progress" />
</item>
</layer-list>
points_progress.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line">
<stroke android:width="6dp" android:color="@color/colorAccent" />
</shape>
points_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line">
<stroke android:width="6dp" android:color="@color/color7" />
</shape>
我必须动态地改变这个绿色区域。为此,我在 xml
中设置了颜色 points_progress.xml请提出想法 提前致谢....
使用这个:
seekBar.getProgressDrawable().setColorFilter(ContextCompat.getColor(сontext, R.color.color_new), PorterDuff.Mode.SRC_IN);
更新:
如果只想更改进度区域的颜色:
LayerDrawable progressDrawable = (LayerDrawable) seekBar.getProgressDrawable();
Drawable filledDrawable = progressDrawable.findDrawableByLayerId(android.R.id.progress);
filledDrawable.setColorFilter(ContextCompat.getColor(сontext, R.color.color_new), PorterDuff.Mode.SRC_IN);