Lorsque ma ListViewItem
est en surbrillance, je souhaite que le texte devienne blanc. Comment puis-je définir cela?
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_focused="true" Android:color="@color/testcolor1"/>
<item Android:state_pressed="true" Android:state_enabled="false" Android:color="@color/testcolor2" />
<item Android:state_enabled="false" Android:color="@color/testcolor3" />
<item Android:color="@color/testcolor5"/>
</selector>
Créez un fichier res/drawable/text_color.xml:
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_focused="true" Android:state_pressed="false" Android:color="#ffffff" />
<item Android:state_focused="true" Android:state_pressed="true" Android:color="#ffffff" />
<item Android:state_focused="false" Android:state_pressed="true" Android:color="#ffffff" />
<item Android:color="#000000" />
</selector>
Utilisez ensuite @drawable/text_color
à partir de xml (ou R.drawable.text_color
à partir de code) comme couleur de texte pour les éléments de votre liste.
En plus de ce que d’autres ont dit plus haut, je voudrais souligner un point, tiré de l’URL ci-dessous.
https://developer.Android.com/reference/Android/content/res/ColorStateList.html
Remarque: La liste des spécifications d'état sera mise en correspondance dans l'ordre dans lequel elles apparaissent dans le fichier XML. Pour cette raison, des éléments plus spécifiques doivent être placés plus tôt dans le fichier. Un élément sans spécification d'état est considéré comme correspondant à tout ensemble d'états et est généralement utile en tant qu'élément final à utiliser par défaut.
Il est important que vous ayez la condition la plus large vers le bas dans la balise de sélection. J'espère que cela t'aides!
Essaye ça...
Tout d’abord, créez une liste d’états de couleur text_color.xml
placée dans le répertoire res/color
.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android" xmlns:tools="http://schemas.Android.com/tools"
tools:ignore="MissingDefaultResource">
<item Android:color="#000000" Android:state_enabled="false"/>
<item Android:color="#FFFFFF"/>
</selector>
Deuxièmement, utilisez
getColorStateList(@NonNull Context context,
@ColorRes int id)
méthode pour obtenir la liste d'état de couleur.
textView.setTextColor(ContextCompat.getColorStateList(context, R.color.text_color))
Troisièmement, activez (true) ou désactivez (false) en fonction de vos besoins,
textView.isEnabled = true //when item is highlighted
Bonne codage ...