49 votes

Comment définir TextColor à l'aide de setTextColor (couleurs ColorsStateList)

J'ai besoin de changer la couleur du texte lors du changement d'état (appui, mise au point) ...

Comment définir la couleur du texte d'un TextView à l'aide de 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
   }
));
 

Changer la couleur de fond de TextView au clic

79voto

imbrizi Points 1260

Si vous devez définir les couleurs dans le code (à l'aide de ColorStateList), mais que vous souhaitez tout de même conserver les états de couleur dans un fichier 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>
 

28voto

ffleandro Points 1298

Vous devez utiliser getColorStateList ()

Je me battais aussi avec ce problème. Si vous souhaitez utiliser un state list , vous devez le déclarer dans le dossier color ressources, au lieu du dossier drawable et utilisez les setTextColor(getResources().getColorStateList(R.color.your_colors)) .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X