Combinar StateListDrawable y LevelListDrawable

¿Hay una manera de combinar los efectos de un StateListDrawable y un LevelListDrawable?

Escribí este archivo de recursos, pero cuando se utiliza nada aparecen:

<?xml version="1.0" encoding="utf-8"?> <level-list xmlns:android="http://schemas.android.com/apk/res/android"> <selector android:constantSize="true" android:variablePadding="false" android:maxLevel="0" > <item android:state_pressed="true"> <layer-list> <item android:drawable="@drawable/btu_color_standard" /> <item android:drawable="@drawable/btu_shade_pressed" /> </layer-list> </item> <item android:state_focused="true"> <layer-list> <item android:drawable="@drawable/btu_color_standard" /> <item android:drawable="@drawable/btu_shade_selected" /> </layer-list> </item> <item> <layer-list> <item android:drawable="@drawable/btu_color_standard" /> <item android:drawable="@drawable/btu_shade_normal" /> </layer-list> </item> </selector> <selector android:constantSize="true" android:variablePadding="false" android:maxLevel="1" > <item android:state_pressed="true"> <layer-list> <item android:drawable="@drawable/btu_color_standard" /> <item android:drawable="@drawable/btu_lighted" /> <item android:drawable="@drawable/btu_shade_pressed" /> </layer-list> </item> <item android:state_focused="true"> <layer-list> <item android:drawable="@drawable/btu_color_standard" /> <item android:drawable="@drawable/btu_lighted" /> <item android:drawable="@drawable/btu_shade_selected" /> </layer-list> </item> <item> <layer-list> <item android:drawable="@drawable/btu_color_standard" /> <item android:drawable="@drawable/btu_lighted" /> <item android:drawable="@drawable/btu_shade_normal" /> </layer-list> </item> </selector> </level-list> 

Entonces llamo

 _btn.getBackground().setLevel(level); //level is either 0 or 1 

para cambiar el nivel de la drawable (_btn es un botón btw).

¿Por qué no funciona?

Gracias por adelantado.

Encontré la solución: los elementos <selector> deben estar incluidos en elementos <item>:

 <?xml version="1.0" encoding="utf-8"?> <level-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:maxLevel="0" > <selector android:constantSize="true" android:variablePadding="false" > <item android:state_pressed="true"> <layer-list> <item android:drawable="@drawable/btu_color_standard" /> <item android:drawable="@drawable/btu_shade_pressed" /> </layer-list> </item> <item android:state_focused="true"> <layer-list> <item android:drawable="@drawable/btu_color_standard" /> <item android:drawable="@drawable/btu_shade_selected" /> </layer-list> </item> <item> <layer-list> <item android:drawable="@drawable/btu_color_standard" /> <item android:drawable="@drawable/btu_shade_normal" /> </layer-list> </item> </selector> </item> <item android:maxLevel="1" > <selector android:constantSize="true" android:variablePadding="false" > <item android:state_pressed="true"> <layer-list> <item android:drawable="@drawable/btu_color_standard" /> <item android:drawable="@drawable/btu_lighted" /> <item android:drawable="@drawable/btu_shade_pressed" /> </layer-list> </item> <item android:state_focused="true"> <layer-list> <item android:drawable="@drawable/btu_color_standard" /> <item android:drawable="@drawable/btu_lighted" /> <item android:drawable="@drawable/btu_shade_selected" /> </layer-list> </item> <item> <layer-list> <item android:drawable="@drawable/btu_color_standard" /> <item android:drawable="@drawable/btu_lighted" /> <item android:drawable="@drawable/btu_shade_normal" /> </layer-list> </item> </selector> </item> </level-list> 

En mi caso, el problema fue que no establecí el botón para usar el fondo en la lista de niveles. Por ejemplo, si tiene la lista de niveles definida en res / drawable / button_levels.xml, debe configurar el fondo del botón como "@ drawable / button_levels".

  • ¿Fondo vertical-rayado en XML?
  • Ventaja dibujable sobre mapa de bits para la memoria en android
  • Definición del estilo de origen XML de Gradient / Shape / Corners
  • ¿Puede el color central ser reposicionado en un androide radial-gradiente dibujable?
  • Burbuja de discurso drawable de Android
  • ¿Es posible eliminar la sombra de los iconos (elementos) en un googlemap?
  • Cómo establecer el tamaño de dibujo en la lista de capas
  • Android 9 patch xml dibujable
  • Fondo de cultivo de Android
  • Rotar ImageView en Android <Nivel de API 11
  • Recorte dibujable a cuadrado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.