今天在写一个布局的时候,发现设置某一个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
这样才是正确的。
网友评论