リストセレクターを介して各リストビューアイテムにカスタム背景を適用することは可能ですか?
デフォルトのセレクター@android:color/transparent
はstate_focused="false"
ケースを指定しますが、これを一部のカスタムドローアブルに変更しても、選択されていないアイテムには影響しません。Romain Guy はこの回答でこれが可能であると示唆しているようです。
私は現在、各ビューでカスタム背景を使用し、アイテムが選択/フォーカスされている場合にセレクターが表示されるように非表示にすることで同じ効果を達成していますが、これをすべて1か所で定義するとよりエレガントになります。
参考までに、これは私がこれを試すために使用しているセレクタです:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="false"
android:drawable="@drawable/list_item_gradient" />
<!-- Even though these two point to the same resource, have two states so the drawable will invalidate itself when coming out of pressed state. -->
<item android:state_focused="true" android:state_enabled="false"
android:state_pressed="true"
android:drawable="@drawable/list_selector_background_disabled" />
<item android:state_focused="true" android:state_enabled="false"
android:drawable="@drawable/list_selector_background_disabled" />
<item android:state_focused="true" android:state_pressed="true"
android:drawable="@drawable/list_selector_background_transition" />
<item android:state_focused="false" android:state_pressed="true"
android:drawable="@drawable/list_selector_background_transition" />
<item android:state_focused="true"
android:drawable="@drawable/list_selector_background_focus" />
</selector>
そして、これは私がセレクターを設定している方法です:
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:listSelector="@drawable/list_selector_background" />
助けてくれてありがとう!