Pregunta

Mi aplicación para Android, que utiliza un TabActivity para mostrar su contenido, tiene 4 pestañas, que todo el uso un dibujable-lista del estado para el icono. Todos ellos tienen la misma estructura, sólo que con diferentes imágenes:

<?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:drawable="@drawable/icon_options_dark" android:state_selected="true" android:state_focused="false" />
        <item android:drawable="@drawable/icon_options_white" />
</selector>`

Sin embargo, al seleccionar las pestañas con la rueda de desplazamiento en mi HTC Desire (highlight), la imagen oscura se utiliza en lugar de la luz. Tan pronto como una pestaña en realidad está seleccionada, se convierte en blanco. ¿Qué estoy haciendo mal?

¿Fue útil?

Solución

Es necesario tener diferentes artículos para diferentes estados. La combinación de varios estados en un elemento (como lo hizo) está definitivamente mal. Su XML puede tener este aspecto:

<xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:drawable="@drawable/icon_options_dark"
        android:state_selected="true" />
  <item android:drawable="@drawable/icon_options_light"
        android:state_focused="true" />
  <item android:drawable="@drawable/icon_options_white" />
</selector>

Cuando se trata de dibujar su dibujable su estado se comprueba en primer lugar. Si se selecciona el primer elemento será utilizado y eso es todo - se llevará a cabo ninguna verificación de centrado (Android sólo encuentra primero - no "más relevante" - estado). Pero si no se selecciona, se realizará la comprobación del estado centrado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top