首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android ListView 項目選中狀態背景無效:將 Selector 設定於 Item 佈局而非 ListView

     編輯:程式設計綜合問答

ListView 的 listSelector 屬性僅影響整個列表的選取高亮,若需單個 Item 根據狀態(按下、聚焦、選中)顯示不同背景,應將 Selector Drawable 設定在 Item 根佈局的 android:background。

Item 佈局

<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 Drawable (res/drawable/list_item_selector.xml)

<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 設定

<ListView
    android:listSelector="@android:color/transparent"
    ... />

關鍵點

  • 將 ListView 的 listSelector 設為透明,避免雙層背景干擾。
  • Item 根佈局使用 android:background 參考 Selector。
  • Selector 中按優先序定義狀態,最後一項為預設狀態。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved