想要完全禁用 ListView 項目的選取高亮效果,即使用戶點擊任一項目,也不顯示任何按下、聚焦、選取狀態的背景變化。
<ListView
android:listSelector="@null"
... />
設定 @null 往往無效,因為系統預設選取器仍會介入。
<ListView
android:listSelector="#00000000"
... />
#00000000 代表完全透明(ARGB:Alpha=0),這會有效覆蓋預設選取器。
在 res/drawable/transparent_selector.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="https://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@android:color/transparent" />
<item android:state_focused="true" android:drawable="@android:color/transparent" />
<item android:state_selected="true" android:drawable="@android:color/transparent" />
<item android:drawable="@android:color/transparent" />
</selector>
佈局中引用:
<ListView
android:listSelector="@drawable/transparent_selector"
... />
listView.setSelector(android.R.color.transapi);
// 或
listView.setSelector(new ColorDrawable(Color.TRANSPARENT));
<ListView
android:listSelector="#00000000"
android:cacheColorHint="#00000000" // 防止滑動時背景閃爍
android:divider="@null" // 移除分隔線
android:dividerHeight="0dp"
android:fadingEdge="none" // 移除邊緣陰影
... />
android:listSelector="@null" 在某些 Android 版本無效,建議改用透明色值RecyclerView,預設無選取效果,需自行實作 ItemTouchHelper 或狀態管理ripple 效果:android:listSelector="?attr/selectableItemBackground"使用 android:listSelector="#00000000" 或 @android:color/transparent 即可徹底禁用 ListView 項目點擊選取效果,比設定 @null 更可靠。