ListView 的 listSelector 屬性僅影響整個列表的選取高亮,若需單個 Item 根據狀態(按下、聚焦、選中)顯示不同背景,應將 Selector Drawable 設定在 Item 根佈局的 android:background。
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="55dp"
android:orientation="horizontal"
android:background="@drawable/list_item_selector"
android:gravity="center_vertical"
android:padding="15dp">
<ImageView android:id="@+id/icon" ... />
<TextView android:id="@+id/title" ... />
</LinearLayout>
<selector xmlns:android="https://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/bg_pressed" />
<item android:state_focused="true" android:drawable="@drawable/bg_focused" />
<item android:state_selected="true" android:drawable="@drawable/bg_selected" />
<item android:drawable="@drawable/bg_default" />
</selector>
<ListView
android:listSelector="@android:color/transparent"
... />
ListView 的 listSelector 設為透明,避免雙層背景干擾。android:background 參考 Selector。