2011-11-17 3 views
1

J'essaie de définir la couleur d'un élément dans une liste lorsqu'il est sélectionné. c'est-à-dire que ma liste est normalement grise, mais je souhaite que l'élément sélectionné par l'utilisateur devienne jaune lorsqu'il est pressé.setSelector provoque un comportement indésirable lors de l'utilisation de ListActivity

Dans la méthode onCreate, j'ai essayé d'utiliser getListView().setSelector(R.xml.list_pressed)

Cependant, cela démontre le comportement étrange de changer la couleur de fond de la liste complète au lieu d'éléments individuels! Je suis perplexe quant à la raison pour laquelle cela se produit. Le ListActivity fait partie d'un TabActivity, si cela fait une différence.

Merci.

Edit: Ceci est list_pressed.xml

<?xml version="1.0" encoding="UTF-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:state_enabled="false" 
     android:drawable="@color/darkgray" /> 
    <item 
     android:state_pressed="true" 
     android:drawable="@color/yellow" /> 
    <item 
     android:state_focused="true" 
     android:drawable="@color/darkgray" /> 
</selector> 
+1

Avez-vous vérifié les réponses à cette question? http://stackoverflow.com/questions/2170531/change-selection-in-a-listview-from-orange-to-green –

+0

J'ai, ils ne m'aident pas. :( – Glitch

+0

Pouvez-vous citer le contenu de R.xml.list_pressed? – Graeme

Répondre

0

J'ai trouvé le problème. Il s'avère que j'avais défini la couleur d'arrière-plan pour chaque élément dans un fichier XML, et ce n'est pas remplacé par le sélecteur. Le remplacement de l'arrière-plan par list_pressed en tant que dessinable a résolu le problème. Je suis surpris de ne pas avoir remarqué cela plus tôt. > _ <

1

Vous ne disposez pas d'un état pour android:state_pressed="false"

Vous avez peut-être fait une erreur à android:state_enabled="false", vous êtes xml devrait lire comme ceci:

<?xml version="1.0" encoding="UTF-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:state_pressed="false" 
     android:drawable="@color/darkgray" /> 
    <item 
     android:state_pressed="true" 
     android:drawable="@color/yellow" /> 
</selector> 
Questions connexes