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にもあります。これをXMLで上記のセレクターListViewに設定すると、アイテムが選択されたときに色が正しく変化します。ただし、このリソースをプログラムで次のように設定しようとしています。android:textColorTextView

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

このように設定すると、色が変化しなくなります。この方法でセレクターをに割り当てることはできますTextViewか?

4

4 に答える 4

61

追加する必要があるかもしれないと思いfindViewByIdます


編集:私のコメントによると、上記は正しくありません。適切な答えは

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

getColorStateList()を使用する必要があります

私もこの問題に苦労していました。 を使用したい場合は、フォルダーではなくリソースフォルダーでstate list宣言し、 を使用する必要があります。colordrawablesetTextColor(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 に答える