J'ai besoin de changer la couleur du texte lors d'un changement d'état (enfoncé, focus) ...
Comment définir la couleur du texte d'un TextView
en utilisant ColorsStateList
?
modifier, résolu:
textView.setTextColor(new ColorStateList(
new int [] [] {
new int [] {Android.R.attr.state_pressed},
new int [] {Android.R.attr.state_focused},
new int [] {}
},
new int [] {
Color.rgb (255, 128, 192),
Color.rgb (100, 200, 192),
Color.White
}
));
solution 2
textView.setTextColor(getResources().getColorStateList(R.color.your_colors))
Si vous devez définir les couleurs dans le code (à l'aide de ColorStateList), mais que vous souhaitez toujours conserver les états de couleur dans un XML, vous pouvez utiliser ceci:
try {
XmlResourceParser parser = getResources().getXml(R.color.your_colors);
ColorStateList colors = ColorStateList.createFromXml(getResources(), parser);
mText.setTextColor(colors);
} catch (Exception e) {
// handle exceptions
}
res/color/your_colors.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_pressed="true"
Android:color="#222222"/>
<item Android:state_selected="true"
Android:color="#222222"/>
<item Android:state_focused="true"
Android:color="#222222"/>
<item Android:color="#0000ff"/>
</selector>
Vous devez utiliser getColorStateList ()
Je rencontrais également des problèmes avec ce problème. Si vous souhaitez utiliser un state list
, Vous devez le déclarer dans le dossier de ressources color
, au lieu du dossier drawable
, et utiliser le setTextColor(getResources().getColorStateList(R.color.your_colors))
.
vous pouvez également utiliser ContextCompat pour charger une liste d'état des couleurs
ColorStateList colors = ContextCompat.getColorStateList(this,R.color.my_color_list);