当状态改变(按下、聚焦)时,我需要更改文本颜色...
如何使用ColorsStateList
设置TextView
的文本颜色?
当状态改变(按下、聚焦)时,我需要更改文本颜色...
如何使用ColorsStateList
设置TextView
的文本颜色?
如果您需要在代码中设置颜色(使用ColorStateList),但仍想将颜色状态保存在XML中,您可以使用以下方法:
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>
mText.setTextColor(getResources().getColorStateList(R.color.your_colors));
- ol_v_ermText.setTextColor(ContextCompat.getColorStateList(getContext(), R.color.my_color_statelist);
- Chris您需要使用 getColorStateList() 方法。
我曾经也遇到过这个问题,如果您想要使用一个状态列表(state list),您需要在 color
资源文件夹中声明它,而不是 drawable
文件夹,并使用 setTextColor(getResources().getColorStateList(R.color.your_colors))
方法。
ColorStateList colors = ContextCompat.getColorStateList(this,R.color.my_color_list);