Change shape solid color at runtime inside Drawable xml used as background
22,551
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(----);
Comments
-
ʞᴉɯ almost 4 years
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?