问题
I\'ve a Drawable xml file (background.xml):
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<layer-list xmlns:android=\"http://schemas.android.com/apk/res/android\" >
<item>
<shape>
...........
</shape>
</item>
<item android:id=\"@+id/shape_id\">
<shape android:shape=\"rectangle\">
<solid android:color=\"#ffefefef\" />
</shape>
</item>
</layer-list>
used by a LinearLayout:
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"
android:background=\"@drawable/background\"
android:id=\"@+id/layout_id\"
>
Now i need to change the shape shape_id
solid color at runtime based on some conditions. How to do this?
回答1:
Found by me:
View v = findViewById(R.id.layout_id);
LayerDrawable bgDrawable = (LayerDrawable)v.getBackground();
final GradientDrawable shape = (GradientDrawable) bgDrawable.findDrawableByLayerId(R.id.shape_id);
shape.setColor(----);
来源:https://stackoverflow.com/questions/16636412/change-shape-solid-color-at-runtime-inside-drawable-xml-used-as-background