Android: отключение подсветки при нажатии на просмотр списка - PullRequest
292 голосов
/ 25 мая 2010

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

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

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

Ответы [ 15 ]

655 голосов
/ 26 мая 2010

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

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

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

Вы можете применить ColorStateList к вашему TextView.

188 голосов
/ 03 сентября 2012

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

<ListView 
android:listSelector="@android:color/transparent" 
android:cacheColorHint="@android:color/transparent"
/>
101 голосов
/ 25 мая 2010

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

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

см. Это для краткого и быстрого решения https://stackoverflow.com/a/12242564/185022

62 голосов
/ 02 ноября 2010

С ListView: отключить выделение фокуса ,

при настройке 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. Также отменяет белую границу между ячейками.

38 голосов
/ 16 сентября 2011

добавьте это также к вашему XMl вместе с listselector .. надеюсь, это будет работать

<ListView
android:cacheColorHint="@android:color/transparent"
android:listSelector="@android:color/transparent"/> 
32 голосов
/ 19 января 2014

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

 @Override
  public boolean isEnabled (int position) {
    return false;
  }
13 голосов
/ 09 февраля 2012

После нескольких «гугл» и тестирования на виртуальных и реальных устройствах, я замечаю, что мой код ниже работает:

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

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

11 голосов
/ 05 июня 2012

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

transparent_drawable.xml * * 1004

<?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"
7 голосов
/ 21 апреля 2013

в коде

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>
5 голосов
/ 03 марта 2013

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

...