I need to change text color when state change(pressed, focus)...
How to set the text color of a TextView
using ColorsStateList
?
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>
you can also use ContextCompat to load a color state list
ColorStateList colors = ContextCompat.getColorStateList(this,R.color.my_color_list);
You have to use getColorStateList()
I was also struggling with this problem, if you want to use a state list
, you need to declared it in the color
resources folder, instead of the drawable
folder, and use the setTextColor(getResources().getColorStateList(R.color.your_colors))
.