How to set TextColor using setTextColor(ColorsStateList colors)

Rodrigo picture Rodrigo · Jul 13, 2011 · Viewed 48.3k times · Source

I need to change text color when state change(pressed, focus)...

How to set the text color of a TextView using ColorsStateList?

edit, solved:

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

Change Background Color of TextView on Click

Answer

imbrizi picture imbrizi · Aug 6, 2011

If you need to set the colors in code (using ColorStateList), but still want to keep the color states in an XML, you might want to use this:

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>