次のセレクターがXMLファイルでres/color/redeemlist_item_color.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
もあります。このTextView
のAndroid:textColor
をXMLで上記のセレクターに設定すると、アイテムが選択されたときに色が正しく変更されます。ただし、このリソースをプログラムで次のように設定しようとしています。
holder.label.setTextColor(R.color.redeemlist_item_color);
このように設定すると、色が変化しなくなります。この方法でセレクターをTextView
に割り当てることはできますか?
findViewById
またはその種類のものを追加する必要があるかもしれないと思います
編集:私のコメントによると、上記は正しくありません正しい答えは
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を使用してその特定の参照を取得し、テキストの色を設定できます。