我有一个图层列表设置为Textview的背景: -
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- Bottom 2dp Shadow -->
<item>
<shape android:shape="rectangle" >
<solid android:color="@android:color/black" />
<corners android:radius="15dp" />
</shape>
</item>
<!-- Blue Top color -->
<item
android:bottom="1.5px"
android:right="1px">
<shape android:shape="rectangle" >
<solid android:color="#2E93FA" />
<corners android:radius="15dp" />
</shape>
</item>
<solid android:color="#2E93FA" />
<corners
android:radius="15dp" />
- &GT; 我需要在列表视图中为此图层列表显示不同的颜色。
我需要通过代码(动态)以编程方式修改第二项。有人可以帮忙吗?
答案 0 :(得分:36)
查看LayerDrawable
,因为它是从您的XML创建的并在运行时使用。
示例:
my_drawable.xml :
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/gradientDrawble">
<shape android:shape="rectangle" >
<gradient
android:endColor="#897343"
android:startColor="#345456" />
<corners android:radius="15dp" />
</shape>
</item>
在运行时修改:
LayerDrawable layerDrawable = (LayerDrawable) getResources()
.getDrawable(R.drawable.my_drawable);
GradientDrawable gradientDrawable = (GradientDrawable) layerDrawable
.findDrawableByLayerId(R.id.gradientDrawble);
gradientDrawable.setCornerRadius(50);