web-dev-qa-db-fra.com

Comment définir la couleur du texte à l'aide de TextColor (couleurs ColorstateList)

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

Changer la couleur d'arrière-plan de TextView au clic

49
Rodrigo

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

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

28
ffleandro

vous pouvez également utiliser ContextCompat pour charger une liste d'état des couleurs

ColorStateList colors = ContextCompat.getColorStateList(this,R.color.my_color_list);
5
Jochem Toolenaar