Android里TextView动态设置颜色(setTextColor)不起作用解决方法

今天在写一个布局的时候,发现设置某一个TextView的选中字色,不起作用:
起初是这么写的:

// 设置字色,选中与非选中
textView.setTextColor(getResources().getColor(R.color.text_judge_color));


其中R.color.text_judge_color的布局是这么写的:

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="#3ebfe9" android:state_pressed="true" />
    <item android:color="#3ebfe9" android:state_selected="true" />
    <item android:color="@color/text_color" /> <!-- not selected -->
</selector>

效果如下:


image.png

我们需要选中时文字颜色也随即显示蓝色,显然是不对的。

后来发现,这么设置是不行的,要使用getColorStateList来设置颜色。
代码如下:

        ColorStateList csl = getResources().getColorStateList(R.color.text_judge_color);
        textView.setTextColor(csl);

运行效果如下:


image.png

这样才是正确的。

推荐阅读更多精彩内容