无法在可绘制的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
但是,我找不到任何可以做到的事情......
任何帮助将不胜感激!