次のようにカラーステートリストを設定しました。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/white_25percent_opacity" android:state_selected="true"/>
<item android:color="@color/white_25percent_opacity" android:state_pressed="true"/>
<item android:color="@color/white_25percent_opacity" android:state_focused="true"/>
<item android:color="@android:color/white"/>
</selector>
次に、次のように recyclerview アイテムの xml に設定しようとしました。
<TextView
android:id="@+id/myTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_centerHorizontal="true"
android:textSize="18sp"
android:paddingLeft="10dp"
android:paddingStart="10dp"
android:paddingRight="10dp"
android:paddingEnd="10dp"
android:textColor="@color/mySelector"
/>
しかし、機能しません-押しても色が変わりません。そこで、次のように onBindViewHolder でプログラムで設定しようとしました:
viewHolder.myTextView.setTextColor(ContextCompat.getColorStateList(context, R.color.mySelector));
そして私もこのように試しました:
viewHolder.myTextView.setTextColor(ContextCompat.getColor(context, R.color.mySelector));
これも機能しません。ここで間違いはどこにあり、なぜこれがリサイクルビューで機能しないのですか? 明確にするために-テキストは初期色(白)で表示されますが、押された色に変わりません。
編集:セレクターをドローアブルにすることで解決しようとしましたが、うまくいきませんでした:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/white_25percent_opacity" android:state_selected="true"/>
<item android:drawable="@color/white_25percent_opacity" android:state_pressed="true"/>
<item android:drawable="@color/white_25percent_opacity" android:state_focused="true"/>
<item android:drawable="@android:color/white"/>
</selector>
ontouchlistener を設定して手動で色を切り替えると、正しく動作しますが、statelist でこれを行いたいと考えています。