Android: отключить выделение на клике listView

Я хочу отключить оранжевую подсветку, которая возникает при касании строки listView. До сих пор в моем xml я пробовал следующее:

android:focusable="false"
android:focusableInTouchMode="false"
android:clickable="false"

Дополнительная информация: я хочу, чтобы разница была равна нулю, когда пользователь коснулся экрана этого объекта listView.

Ответ 1

Добавьте это в свой xml:

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

И для проблемы это может работать (я не уверен, и я не знаю, есть ли лучшие решения):

В текстовый файл можно применить ColorStateList.

Ответ 2

Ответ RoflcoptrException должен сделать трюк, но по какой-то причине это не сработало для меня, поэтому я отправляю решение, которое сработало для меня, надеюсь, что это поможет кому-то

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

Ответ 3

Эффект оранжевого выделения - style в ListView. В этой статье дается хороший обзор того, как переопределить стиль listView.

По существу, у вас есть селектор, который указывает разные элементы стиля на основе текущего состояния.

см. это для быстрого и быстрого решения fooobar.com/questions/25374/...

Ответ 4

из http://groups.google.com/group/android-developers/browse_thread/thread/03c92af7b519d290?pli=1

когда вы устанавливаете свой ListAdapter, используйте следующий код

ListAdapter adapter = new SimpleCursorAdapter(MyList, Layout, c, 
                new String[] { "Name", "Score" }, to) 
{ 
        public boolean areAllItemsEnabled() 
        { 
                return false; 
        } 
        public boolean isEnabled(int position) 
        { 
                return false; 
        } 
}; 

Это переопределит класс BaseAdapter. Он также отменяет белую границу между ячейками.

Ответ 5

добавьте это также в ur XMl вместе с listselector..hope он будет работать

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

Ответ 6

Если вы используете ArrayAdapter или BaseAdapter для заполнения элементов списка. Override метод isEnabled и верните false.

 @Override
  public boolean isEnabled (int position) {
    return false;
  }

Ответ 7

После нескольких "google'ing и тестирования на виртуальных и реальных устройствах, я замечаю, что мой ниже код работает:

ArrayAdapter<String> myList = new ArrayAdapter<String>(this, R.layout.list_item, strText) {
    public boolean isEnabled(int position) 
    { 
            return false; 
    } 
};

Обратите внимание, что я пропустил часть areAllItemsEnabled().

Ответ 8

Ничто не помогает мне, кроме этого:

transparent_drawable.xml

<?xml version="1.0" encoding="utf-8"?>    
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#00000000"/>
</shape>

layout.xml

android:listSelector="@drawable/transparent_drawable"

Ответ 9

в коде

listView.setSelector(getResources().getDrawable(R.drawable.transparent));

и добавьте небольшое прозрачное изображение в папку с рисунком.

Как: transparent.xml

<?xml version="1.0" encoding="utf-8"?>    
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#00000000"/>
</shape>

Ответ 10

Для меня android:focusableInTouchMode="true" - это путь. android:listSelector="@android:color/transparent" бесполезен. Обратите внимание, что я использую настраиваемое listview с несколькими объектами в каждой строке.

Ответ 11

Вам нужно добавить: android:cacheColorHint="@android:color/transparent"

Ответ 12

В качестве альтернативы:

listView.setSelector(android.R.color.transparent);

или

listView.setSelector(new StateListDrawable());

Ответ 13

Если вы хотите отключить выделение для одного элемента представления списка, но сохраните ячейку включенной, установите цвет фона для этой ячейки, чтобы отключить выделение.

Например, в макете вашей ячейки установите android:background="@color/white"

Ответ 14

вы можете просто получить pos, который вы получаете из onItemClick и выполните:

listView.setItemChecked(pos, false);

что лучший способ узнать о