Подсветка выбранного элемента ListView

Я работаю над GridView с setChoiceMode(GridView.CHOICE_MODE_MULTIPLE_MODAL), По умолчанию строки не выделяются (с синим выделением, которое вы видите в приложениях WhatsApp или Gallery), поэтому мне интересно, выполняет ли API-интерфейс Android уже выделение выделенных элементов, и я что-то упускаю (если да, то что Мне не хватает?) Или мне нужно позаботиться о выделении выделенных строк самостоятельно (если так, то как выделить, а не просто поменять фон)?

Вот мой код:

gridView.setOnItemClickListener(this);
gridView.setEmptyView(view.findViewById(R.id.empty));
gridView.setChoiceMode(GridView.CHOICE_MODE_MULTIPLE_MODAL);

// multiChoiceModeListener is a subclass of AbsListView.MultiChoiceModeListener
// with no particular code on its abstracts methods.
gridView.setMultiChoiceModeListener(multiChoiceModeListener);

1 ответ

Решение

Используйте это для фона ListItem (макет XML)

android:background="?android:attr/activatedBackgroundIndicator"

В основном это только селектор, вы также можете создать его сами: https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/res/res/drawable/activated_background.xml

РЕДАКТИРОВАТЬ:

Учитывая ваш комментарий, это решает это:

android:foreground="?android:attr/activatedBackgroundIndicator" с FrameLayout

Также связанный вопрос: Как установить атрибут переднего плана для другого не FrameLayout представления

Другие вопросы по тегам