我使用以下代码创建了一个可绘制文件:
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/gray_background"/>
<item
android:drawable="@color/light_green"
android:bottom="@dimen/event_button_bottom_color"/>
</layer-list>
现在,在运行时,我想以编程方式使用其他颜色更改第二项的可绘制颜色(@ color / light_green)。我怎么能这样做,如果有人知道如何实现这一点,请帮助。
非常感谢先进。 :)
答案 0 :(得分:4)
首先为item添加id。按ID查找项目并更改颜色。
<item android:id="@+id/shape_1" android:drawable="@color/gray_background"/>
<item android:id="@+id/shape_2"
android:drawable="@color/light_green"
android:bottom="@dimen/event_button_bottom_color"/>
在运行时修改:
LayerDrawable layerDrawable = (LayerDrawable) getResources()
.getDrawable(R.drawable.my_drawable);
GradientDrawable gradientDrawable = (GradientDrawable) layerDrawable
.findDrawableByLayerId(R.id.shape_1);
gradientDrawable.setColor(...);