son - imageview como boton en android studio
Cambiar el color sólido de la forma en el tiempo de ejecución dentro del xml Drawable utilizado como fondo (1)
Tengo un archivo xml Drawable (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>
utilizado por 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"
>
Ahora necesito cambiar la forma del color sólido de shape_id
en el tiempo de ejecución en función de algunas condiciones. ¿Como hacer esto?
Encontrado por mí:
View v = findViewById(R.id.layout_id);
LayerDrawable bgDrawable = (LayerDrawable)v.getBackground();
final GradientDrawable shape = (GradientDrawable) bgDrawable.findDrawableByLayerId(R.id.shape_id);
shape.setColor(----);