以编程方式将xml可绘制形状颜色更改为src

时间:2017-01-01 21:01:58

标签: android xml android-drawable xml-drawable

无法在可绘制的XML中更改形状的颜色。

我有这个xml可绘制文件(在另一个内部创建3个圆圈):

<?xml version="1.0" encoding="utf-8"?>

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape android:shape="oval"
        android:id="@+id/card_layer1">
        <solid android:color="@android:color/black"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <size
            android:width="5dp"
            android:height="5dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </shape>
</item>
<item android:top="2dp" android:left="2dp" android:right="2dp" android:bottom="2dp">
    <shape android:shape="oval"
        android:id="@+id/card_layer2">
        <solid android:color="#ff0000"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <size
            android:width="5dp"
            android:height="5dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </shape>
</item>

<item android:top="4dp" android:left="4dp" android:right="4dp" android:bottom="4dp">
    <shape android:shape="oval"
        android:id="@+id/card_layer3">
        <solid android:color="#ffffff"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <size
            android:width="5dp"
            android:height="5dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </shape>
</item>

我希望能够以编程方式更改这些形状的每一层的颜色。

我找到了这个答案:Change shape's color,但它对我来说效果不佳,因为它更改了background属性,我正在使用src属性,所以我认为我需要一个不同的解决方案。

基本上,我需要找到一种方法来做一些能让我得到src视图而不是背景的东西:

View v = findViewById(R.id.layout_id);

LayerDrawable bgDrawable = (LayerDrawable)v.getBackground(); // get src and not background

但是,我找不到任何可以做到的事情......

任何帮助将不胜感激!

0 个答案:

没有答案