Inflar la lista de capas de las formas en android
Tengo el archivo siguiente en mi carpeta /drawable/mybkg.xml
llamado /drawable/mybkg.xml
. Quiero inflarlo para que pueda cambiar los colores mediante programación. ¿Eso es posible en Android?
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <shape android:shape="oval" > <padding android:top="5dp" android:bottom="2dp" android:left="2dp" android:right="2dp" /> <solid android:angle="270" android:color="#1bd4f6" /> <stroke android:width="2dp" android:color="#121ce5" /> </shape> </item> <!-- Foreground --> <item> <shape android:shape="oval" > <solid android:color="#1b90f6" /> </shape> </item> </layer-list>
Acabo de ver una clase llamada LayerDrawable
. ¿Alguien sabe cómo puedo convertir mi archivo xml en un LayerDrawable
escribiendo el código o inflando el xml existente?
- Android xml layer-list no se muestra correctamente en algunos dispositivos
- Tamaño incorrecto de elementos en la lista de capas en pre-piruletas
- Android: cómo configurar la altura de la forma de dibujo en porcentaje?
- Android: propósito de usoLevel en etiqueta de forma
- Texto de Android en lista de capas
- ¿Es posible crear una anchura fija en XML?
- Entender la <lista de capas> de Android
- Androide, fondo, lista de capas y elemento de mapa de bits escalable
- Forma del androide con el movimiento inferior
Debe utilizar el método Resources.getDrawable(int id)
. Aquí está la documentación: http://developer.android.com/reference/android/content/res/Resources.html#getDrawable(int) Infla cualquier tipo de recurso extraíble. Lo único que queda por hacer es emitir el drawable devuelto al tipo más específico que necesites (en tu caso a LayerDrawable
). Aquí hay un ejemplo:
// calling from Activity LayerDrawable d = (LayerDrawable) getResources().getDrawable(R.drawable.my_drawable);