studio son redondo programar los hacer funcion fondo diseño cuales como color cambiar botones boton android layout drawable shape

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(----);