2010-10-23 7 views
0

Mon application Android, qui utilise une TabActivity pour afficher son contenu, comporte 4 onglets qui utilisent tous une liste d'états dessinable pour l'icône. Ils ont tous la même structure, juste avec des images différentes:Dans une liste d'états Android pouvant être dessinée, état_focused est ignoré

<?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>` 

Cependant, lors de la sélection des onglets avec la boule de commande sur mon HTC Desire (sélectionner vert), l'image sombre est utilisé au lieu de la lumière. Dès qu'un onglet est sélectionné, il devient blanc. Qu'est-ce que je fais mal?

Répondre

1

Vous devez avoir différents éléments pour différents états. Combiner plusieurs états dans un article (comme vous l'avez fait) est définitivement faux. Votre XML peut ressembler à ceci:

<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> 

Quand il s'agit de dessiner votre dessin, son état est d'abord vérifié. Si elle est sélectionnée, le premier élément sera utilisé et c'est tout - aucun contrôle ciblé ne sera effectué (Android trouve seulement d'abord - pas "le plus pertinent" - état). Mais s'il n'est pas sélectionné, la vérification de l'état focalisé sera effectuée.

Questions connexes