Список Android с элементами, выделенными серым цветом

В Android я хочу предоставить пользователю список. Когда элемент в списке выбран, выполняется какое-то действие, и этот элемент списка становится недоступным для выбора. Он также «неактивен» или тому подобное, чтобы указать, что его нельзя выбрать при следующем отображении списка. Я видел переопределение isSelectable() в адаптере, но я считаю, что это приводит к тому, что элемент рассматривается как разделитель, что вызывает визуальные проблемы. И я не нашел способ «затенить» элемент. Есть идеи? Спасибо...


person Community    schedule 07.08.2009    source источник


Ответы (3)


Что касается выделения элемента серым цветом. Я не уверен, что это лучший способ, но это то, что я делаю:

view.setAlpha(75);
view.setBackgroundColor(Color.GRAY);

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

view.setAlpha(255);
view.setBackgroundColor(Color.WHITE);

то есть, если ваше исходное состояние не было прозрачным, а цвет фона был белым.

person Matt Wear    schedule 03.11.2010
comment
Примечание: представление должно быть представлением Android, которое поддерживает setAlpha. Примером одного из таких представлений является ImageView. - person Matt Wear; 03.11.2010
comment
setAlpha(float) для класса View доступен только с 11 уровня API. developer.android.com/reference/android/view/< /а> - person Roger Alien; 21.02.2012
comment
setAlpha имеет диапазон от 0 до 1. Такие значения, как 255, не имеют смысла. - person OneWorld; 18.09.2013

Вам нужно, чтобы представление было отключено. Если вы создаете представления, просто вызовите .setDisabled(boolean) в верхнем представлении. По моему опыту, отключение элемента списка не очень хорошо работает.

person Isaac Waller    schedule 07.08.2009

Вот решение, которое я использую. Я настроил OnItemClickListener для своего ListView. Когда элемент в списке щелкнут, я беру переданное представление и вызываю для него setEnabled(false). Это сделает элемент серым. Однако последующие щелчки по этому элементу по-прежнему будут вызывать метод onItemClick. Таким образом, вам нужно будет проверять при каждом щелчке, включен ли элемент или отключен, и действовать соответствующим образом.

person meg18019    schedule 08.08.2009