Подтвердить что ты не робот

Эффект RecyclerView onItemClick в L

Возможно, этот вопрос задавали раньше, но я не смог найти точного ответа. Я реализовал виджет RecyclerView в качестве списка в моем тестовом приложении L, и я хочу получить "материальный эффект", когда вы нажимаете на элемент из списка. Я внедрил onClickListener в моем создании ViewHolder и установил атрибут

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

в качестве фона для моего макета элемента списка (для родителя).

Но ничего из этого не получилось. Когда я нажимаю на пункты НИЧЕГО, происходит ". Нет никакого эффекта, холода, материала, нет... Пожалуйста, укажите, что я делаю что-то неправильно здесь... спасибо

4b9b3361

Ответ 1

Я сделал глупую ошибку и не поставил

android:clickable="true"
android:focusable="true"

в мой макет списка. Я думаю, что этого не требовалось до L, но это не имеет значения, потому что в этом и заключается проблема.

Ответ 2

Сандра ответ не работал у меня. Мне понадобилось еще одно свойство в макете списка:

android:clickable="true"
android:focusable="true"
android:background="?android:attr/selectableItemBackground"

Примечание: если вы получили сообщение об ошибке при вставке в последнюю строку, ваше приложение Android будет установлено на версии 10 или ниже. Просто щелкните правой кнопкой мыши на ошибке в Android Studio и установите ее так, чтобы она также создала версию вашего макета v11. Затем в исходном макете обязательно удалите

android:background="?android:attr/selectableItemBackground"`

Это связано с тем, что анимация не поддерживается в версиях vroid vroid или ниже. Создав эти два файла макета, анимация будет правильно отображаться в версиях Android версии v11 +, и, конечно же, она не будет отображаться в более низких версиях.

(или просто увеличьте версию minSdkVersion вашего приложения до более 10)

Ответ 3

android:clickable="true"
android:focusable="true"

эти строки больше не используются. просто добавив

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

работает для эффекта щелчка.