如何在android中更改图层列表中的项目可绘制颜色

时间:2016-11-15 06:24:18

标签: java android android-drawable

我使用以下代码创建了一个可绘制文件:

    <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)。我怎么能这样做,如果有人知道如何实现这一点,请帮助。

非常感谢先进。 :)

1 个答案:

答案 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(...);