Couleur de sélecteur Android ListView

Salut à tous,

J’ai 2 questions concernant un ListView sous Android:

  1. Comment puis-je obtenir la couleur de la ligne focalisée de listview? J’ai essayé d’utiliser la méthode ListView.getSelector () qui, d’après sa documentation, devrait me donner ce que je cherche, mais cela me donne un object Drawable dont je ne sais pas comment récupérer la couleur (si possible. ..).

  2. Comment puis-je définir la couleur de la ligne focalisée de listview? Ici, j’ai essayé d’utiliser la méthode setSelector () sur la listview, en lui passant un object ColorDrawable, mais le résultat est que tout l’arrière-plan de la vue liste est peint dans cette couleur … et ce n’est pas ce que je voulais bien sûr…

Merci!

Le sélecteur de liste pouvant être dessiné est un StateListDrawable – il contient une référence à plusieurs tirables pour chaque état que la liste peut être, comme sélectionné, focalisé, pressé, désactivé …

Bien que vous puissiez récupérer le dessinable à l’aide de getSelector() , je ne pense pas que vous puissiez récupérer un Drawable spécifique à Drawable de StateListDrawable , et il ne semble pas non plus possible de récupérer la couleur directement à partir d’un ColorDrawable .

En ce qui concerne la définition de la couleur, vous avez besoin d’un StateListDrawable comme décrit ci-dessus. Vous pouvez définir cela sur votre liste à l’aide de l’atsortingbut android:listSelector , en définissant le dessin en XML comme ceci:

       

POUR AJOUTER: @ La réponse de Christopher ne fonctionne pas sur API 7/8 (selon le commentaire correct de @Jonny) SI vous utilisez des couleurs, au lieu de tirables. (Dans mes tests, utiliser des tirables selon Christopher fonctionne bien)

Voici le FIX pour 2.3 et ci-dessous en utilisant des couleurs:

  • Android: L’intégralité de ListView change de couleur lors de la mise au point, pas seulement l’élément enfant ListView

Comme pour @Charles Harley, il y a un bogue dans 2.3 et ci-dessous où le fait de remplir l’élément de liste avec une couleur entraîne la sortie de la couleur sur toute la liste. Sa solution est de définir un dessin de shape contenant la couleur souhaitée et de l’utiliser à la place de la couleur.

Je suggère de regarder ce lien si vous souhaitez simplement utiliser une couleur comme sélecteur, et que vous ciblez Android 2 (ou du moins autorisez Android 2).