How can I programmatically change the color (#000000
) of a shape in a layer list?
Here is my layer list:
- // Give id
// CHANGE THIS COLOR
-
Then in you code just add
LayerDrawable layerDrawable = (LayerDrawable) getResources()
.getDrawable(R.drawable.my_drawable);
GradientDrawable gradientDrawable = (GradientDrawable) layerDrawable
.findDrawableByLayerId(R.id.gradientDrawble);
gradientDrawable.setColor(color); // change color
Update Oct-2016
getDrawable()
is now deprecated, you should use ContextCompat.getDrawable(context, color)
instead.
Beside, if you get the LayerDrawable
by findDrawableByLayerId()
, then you had to call view.setBackground(layerDrawable)
for this to take effect. Alternatively, instantiating the layerDrawable
by view.getBackground()
also worked.