我在 res / color / redeemlist_item_color.xml 下的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="#FFFFFF" /> <!-- pressed -->
<item android:state_selected="true"
android:color="#FFFFFF" /> <!-- focused -->
<item android:color="#000000" /> <!-- default -->
</selector>
我在TextView
项目布局中也有一个ListView
。当我将此android:textColor
上的TextView
设置为XML中的上述选择器时,选择该项时颜色会正确更改。但是,我尝试以下列方式以编程方式设置此资源:
holder.label.setTextColor(R.color.redeemlist_item_color);
以这种方式设置时,颜色不再变化。可以用这种方式将选择器分配给TextView
吗?
答案 0 :(得分:40)
您必须使用getColorStateList()
我也在努力解决这个问题,如果你想使用state list
,你需要在color
资源文件夹而不是drawable
文件夹中声明它,并且使用setTextColor(getResources().getColorStateList(R.color.redeemlist_item_color))
。
答案 1 :(得分:37)
我认为您可能需要添加findViewById
或其他类似的内容
编辑:根据我的评论,上面的内容不正确
setTextColor(getResources().getColorStateList(R.color.redeemlist_item_color));
答案 2 :(得分:4)
您可以尝试:
holder.label.setTextColor(getResources()的getColor(R.color.redeemlist_item_color)。);
而不是:
holder.label.setTextColor(R.color.redeemlist_item_color);
答案 3 :(得分:0)