TextView 上的选择器不会改变颜色
Selector on TextView does not change color
我有一个以编程方式创建的 TextView 并为其添加了一个颜色选择器 xml 文件。在选择器文件中只有一个激活状态和一个默认状态。
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="#ff867f"/>
<item android:color="#c50e29" android:state_activated="true"/>
</selector>
但是如果我在 Activity 中激活 TextView,它不会改变文本颜色并且仍然显示默认颜色。
tv_header_exam.setActivated(true);
tv_text_exam.setActivated(true);
tv_header_exam.setTextColor(getResources().getColor(R.color.exam));
tv_text_exam.setTextColor(getResources().getColor(R.color.exam));
我是不是漏掉了什么?
编辑:
我也尝试过使用以下选择器:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="#c50e29" android:state_activated="true"/>
<item android:color="#ff867f" android:state_activated="false"/>
</selector>
使用 getColorStateList()
而不是 getColor()
。
如果支持
ContextCompat.getColorStateList(context, R.color.your_selector);
getColor() 的 Javadoc:
Returns a color integer associated with a particular resource ID. If
the resource holds a complex {@link ColorStateList}, then the default
color from the set is returned.
getColorStateList() 的 JavaDoc:
Returns a color state list associated with a particular resource ID.
The resource may contain either a single raw color value or a complex
{@link ColorStateList} holding multiple possible colors.
我有一个以编程方式创建的 TextView 并为其添加了一个颜色选择器 xml 文件。在选择器文件中只有一个激活状态和一个默认状态。
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="#ff867f"/>
<item android:color="#c50e29" android:state_activated="true"/>
</selector>
但是如果我在 Activity 中激活 TextView,它不会改变文本颜色并且仍然显示默认颜色。
tv_header_exam.setActivated(true);
tv_text_exam.setActivated(true);
tv_header_exam.setTextColor(getResources().getColor(R.color.exam));
tv_text_exam.setTextColor(getResources().getColor(R.color.exam));
我是不是漏掉了什么?
编辑:
我也尝试过使用以下选择器:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="#c50e29" android:state_activated="true"/>
<item android:color="#ff867f" android:state_activated="false"/>
</selector>
使用 getColorStateList()
而不是 getColor()
。
如果支持 getColor() 的 Javadoc: Returns a color integer associated with a particular resource ID. If
the resource holds a complex {@link ColorStateList}, then the default
color from the set is returned. getColorStateList() 的 JavaDoc: Returns a color state list associated with a particular resource ID.
The resource may contain either a single raw color value or a complex
{@link ColorStateList} holding multiple possible colors.ContextCompat.getColorStateList(context, R.color.your_selector);