以编程方式将TextView颜色设置为<selector>

res / color / redeemlist_item_color.xml下的XML文件中定义了以下select器:

<?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> 

我也有一个ListView项目布局的TextView 。 当我把这个TextView上的android:textColor设置为XML中的上面的select器时,当select该项目时颜色正确地改变。 但是,我试图按以下方式编程设置此资源:

 holder.label.setTextColor(R.color.redeemlist_item_color); 

当这样设置时,颜色不再改变。 可以通过这种方式将select器分配给TextView吗?

Solutions Collecting From Web of "以编程方式将TextView颜色设置为<selector>"

我想你可能需要添加findViewById或其他types的东西


编辑:以上是不正确的,根据我的评论正确的答案是

 setTextColor(getResources().getColorStateList(R.color.redeemlist_item_color)); 

你必须使用getColorStateList()

我也在努力解决这个问题,如果你想使用state list ,你需要在color资源文件夹中声明它,而不是drawable文件夹,并使用setTextColor(getResources().getColorStateList(R.color.redeemlist_item_color))

你可以试试:

holder.label.setTextColor(getResources()的getColor(R.color.redeemlist_item_color));

代替 :

holder.label.setTextColor(R.color.redeemlist_item_color);

拉斯曼是正确的。 你需要给TextView一个ID,android:id =“@ + / something”。 您使用该ID和findViewById检索对该特定的引用,然后您可以设置文本颜色。