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.