36

我在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项目布局。当我在 XML 中将其设置android:textColorTextView上述选择器时,选择该项目时颜色会正确更改。但是,我正在尝试通过以下方式以编程方式设置此资源:

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

以这种方式设置时,颜色不再变化。TextView可以通过这种方式将选择器分配给a吗?

4

4 回答 4

61

我认为您可能需要添加findViewById或类似的东西


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

setTextColor(getResources().getColorStateList(R.color.redeemlist_item_color));
于 2011-04-13T00:19:31.687 回答
41

你必须使用getColorStateList()

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

于 2013-06-30T01:37:59.933 回答
4

你可以试试:

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

代替 :

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

于 2011-07-13T03:57:38.087 回答
0

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

于 2011-04-13T00:23:24.040 回答