Ответ 1
Добавьте это в свой xml:
android:listSelector="@android:color/transparent"
И для проблемы это может работать (я не уверен, и я не знаю, есть ли лучшие решения):
В текстовый файл можно применить ColorStateList.
Я хочу отключить оранжевую подсветку, которая возникает при касании строки listView. До сих пор в моем xml я пробовал следующее:
android:focusable="false"
android:focusableInTouchMode="false"
android:clickable="false"
Дополнительная информация: я хочу, чтобы разница была равна нулю, когда пользователь коснулся экрана этого объекта listView.
Добавьте это в свой xml:
android:listSelector="@android:color/transparent"
И для проблемы это может работать (я не уверен, и я не знаю, есть ли лучшие решения):
В текстовый файл можно применить ColorStateList.
Ответ RoflcoptrException должен сделать трюк, но по какой-то причине это не сработало для меня, поэтому я отправляю решение, которое сработало для меня, надеюсь, что это поможет кому-то
<ListView
android:listSelector="@android:color/transparent"
android:cacheColorHint="@android:color/transparent"
/>
Эффект оранжевого выделения - style в ListView. В этой статье дается хороший обзор того, как переопределить стиль listView.
По существу, у вас есть селектор, который указывает разные элементы стиля на основе текущего состояния.
см. это для быстрого и быстрого решения fooobar.com/questions/25374/...
из 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. Он также отменяет белую границу между ячейками.
добавьте это также в ur XMl вместе с listselector..hope он будет работать
<ListView
android:cacheColorHint="@android:color/transparent"
android:listSelector="@android:color/transparent"/>
Если вы используете ArrayAdapter
или BaseAdapter
для заполнения элементов списка. Override
метод isEnabled
и верните false
.
@Override
public boolean isEnabled (int position) {
return false;
}
После нескольких "google'ing и тестирования на виртуальных и реальных устройствах, я замечаю, что мой ниже код работает:
ArrayAdapter<String> myList = new ArrayAdapter<String>(this, R.layout.list_item, strText) {
public boolean isEnabled(int position)
{
return false;
}
};
Обратите внимание, что я пропустил часть areAllItemsEnabled()
.
Ничто не помогает мне, кроме этого:
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"
в коде
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>
Для меня android:focusableInTouchMode="true"
- это путь. android:listSelector="@android:color/transparent"
бесполезен. Обратите внимание, что я использую настраиваемое listview с несколькими объектами в каждой строке.
Вам нужно добавить:
android:cacheColorHint="@android:color/transparent"
В качестве альтернативы:
listView.setSelector(android.R.color.transparent);
или
listView.setSelector(new StateListDrawable());
Если вы хотите отключить выделение для одного элемента представления списка, но сохраните ячейку включенной, установите цвет фона для этой ячейки, чтобы отключить выделение.
Например, в макете вашей ячейки установите android:background="@color/white"
вы можете просто получить pos
, который вы получаете из onItemClick
и выполните:
listView.setItemChecked(pos, false);
что лучший способ узнать о