選択したアイテムをカスタムの方法で強調表示したいリストビューがあります。を含む、アダプターのgetView
メソッドですべてのアイテムのプロパティを設定していますitemView.setSelected(true)
。
メイン レイアウトは、リストビューを次のように定義します。
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:choiceMode="multipleChoice"
android:listSelector="@drawable/list_selector" />
(選択モードで遊んでも役に立ちません)。
list_selectorはほとんど空のスタブです。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@android:color/transparent" />
</selector>
リストビュー全体に特定のスタイルは必要ないので、デフォルトのままにしますが、この回答によると、アイテムセレクターのリストビューのセレクターが必要です。とにかく、list_selectorがなければ問題は残ります。
リストビュー アイテムのレイアウト:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight"
android:background="@drawable/listitem_background"
android:orientation="vertical">
そして、次のlistitem_backgroundセレクターを参照します。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:drawable="@android:color/white" />
<item android:drawable="@android:color/transparent" />
</selector>
問題は、選択したアイテムの背景が白でないことです。
たとえば、listitem_backgroundandroid:state_selected="true"
のセレクターを に変更すると、セレクターが機能し始めます。つまり、アイテムに触れるとアイテムの背景が白くなります。android:state_pressed="true"
したがって、セレクターまたはアイテムの選択方法にエラーがあると思います。
Java からバックグラウンドを設定するか、チェック可能な状態を利用することで回避策を作成できますが、セレクターに関する現在の問題を理解し、修正したいと考えています。前もって感謝します。