Android – отключить выбор списка ListView, но включить OnClick

Я хочу отключить выделение, которое появляется, когда пользователь выбирает строку (listSelector) из кода. Я не хочу отключать onClick и включенные параметры (я все еще хочу слушать клики, просто хочу удалить выделение).

Просто создайте drawable, который имеет прозрачный цвет в нем, что-то вроде этого:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_window_focused="false" android:drawable="@android:color/transparent"/> <!-- 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_disabled_holo_light" /> <item android:state_focused="true" android:state_enabled="false" android:drawable="@drawable/list_selector_disabled_holo_light" /> <item android:state_focused="true" android:state_pressed="true" android:drawable="@color/transparent" /> <item android:state_focused="false" android:state_pressed="true" android:drawable="@color/transparent" /> <item android:state_focused="true" android:drawable="@drawable/list_focused_holo" /> </selector> 

И затем, заданный кодом или XML:

 listView.setSelector(R.drawable.my_transparent_selector); 

В javadoc для этого метода сказано:

Установите Drawable, который должен использоваться, чтобы выделить текущий выбранный элемент.

И атрибут XML:

андроид: listSelector

Вы можете играть со всеми состояниями, помните, что у вас также есть состояние фокусировки.

Укажите android:listSelector="@android:color/transparent" в вашем ListView XML.

Я сделал так:

Добавив два свойства ListView .

 android:cacheColorHint="@android:color/transparent" android:listSelector="@android:color/transparent" 

Ваш ListView должен выглядеть следующим образом:

 <ListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="match_parent" android:cacheColorHint="@android:color/transparent" android:listSelector="@android:color/transparent"> </ListView> 

Готово

Попробуйте listview.setSelector(new ColorDrawable(Color.TRANSPARENT));

Эффект выделения – это стиль в спискеSelector. Вы можете переопределить стиль listSelector.

Это пример со списком: Android: отключить выделение на клике listView