Я пытаюсь добавить эффект пульсации в элемент RecyclerView. Я поискал в Интернете, но не смог найти то, что мне нужно. Я предполагаю, что это должен быть индивидуальный эффект. Я попробовал атрибут android: background для самого RecyclerView и установил для него значение «? Android: selectableItemBackground», но это не сработало .:
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
android:clickable="true"
android:background="?android:selectableItemBackground"
android:id="@+id/recyclerView"
android:layout_below="@+id/tool_bar"/>
Это RecyclerView, к которому я пытаюсь добавить эффект:
android
android-animation
android-recyclerview
Георгий Коэмджиев
источник
источник
CardView
в этом вопросе есть определенные аспекты, которые не относятся к этому более общему вопросу.Ответы:
Я понял. Единственное, что мне нужно было сделать, это добавить этот атрибут:
в корневой элемент макета, который мой адаптер RecyclerView раздувает следующим образом:
Результат:
Если вы по-прежнему не видите эффект пульсации, добавьте эти строки также в корневой элемент макета.
источник
android:foreground="?android:attr/selectableItemBackground"
android:clickable="true"
также сделать эту работуКак уже было сказано, самое простое решение - просто добавить одно из следующего в
RecyclerView
качестве фона строки:android:background="?android:attr/selectableItemBackground"
android:background="?attr/selectableItemBackground"
Однако, если у вас возникли проблемы с этим методом или если вам нужен более точный контроль над цветами, вы можете сделать следующее.
Пользовательский эффект пульсации
Этот ответ начинается с этого простого примера Android RecyclerView . Это будет выглядеть как на следующем изображении.
Добавить селектор для устройств до API 21
До API 21 (Android 5.0 Lollipop) щелчок по
RecyclerView
элементу просто менял цвет фона (без эффекта пульсации). Мы тоже этим займемся. Если у вас все еще есть пользователи с этими устройствами, они привыкли к такому поведению, поэтому мы не будем слишком о них беспокоиться. (Конечно, если вам действительно нужен эффект пульсации для них, вы можете использовать собственную библиотеку .)Щелкните
res/drawable
папку правой кнопкой мыши и выберите « Создать»> «Файл ресурсов с возможностью рисования» . Назови этоcustom_ripple
. Нажмите ОК и вставьте следующий код.custom_ripple.xml
Я использовал
colorAccent
цвет выделения для нажатого состояния, потому что он уже был доступен, но вы можете определить любой цвет, который хотите.Добавить эффект пульсации для устройств API 21+
Щелкните
res/drawable
папку правой кнопкой мыши и выберите « Создать»> «Файл ресурсов с возможностью рисования» . Назови этоcustom_ripple
снова. Но на этот раз пока не нажимайте ОК. Из Доступных отборочного списка выберите версию , затем нажмите >> кнопку и запись21
на уровень API платформы . Теперь нажмите ОК и вставьте следующий код.v21 / custom_ripple.xml
Опять же, я использовал
colorAccent
цвет ряби, потому что он был доступен, но вы можете использовать любой цвет, какой захотите. Маска ограничивает эффект ряби только макетом строки. Цвет маски явно не имеет значения поэтому я просто использовал непрозрачный белый цвет.Установить как фон
В корневом макете вашего элемента RecyclerView установите для фона настраиваемую рябь, которую мы создали.
В примере проекта , с которого мы начали, это выглядит так:
Законченный
Вот и все. Теперь у вас должна быть возможность запустить свой проект. Спасибо за этот ответ и это видео на YouTube за помощь.
источник
Думаю, упускается одна маленькая деталь.
Если вы по-прежнему не получаете эффекта пульсации после добавления,
android:background="?android:attr/selectableItemBackground"
попробуйте добавить следующие строки в корень макета.Это обеспечит доступность представления и включит эффект пульсации с указанным выше атрибутом фона.
источник
добавьте эти строки в корневое представление xml вашего адаптера
источник
Простой и индивидуальный подход - установить тему представления, как описано здесь .
some_view.xml
some_style.xml
Другие пользовательские реализации можно найти здесь .
источник
Использование стиля кнопки
Это работало для меня бесчисленное количество раз.
Добавьте стиль кнопки без полей к корневому элементу макета. Нет необходимости в атрибутах
focusable
илиclickable
, стиль по умолчанию инкапсулирует все это за вас.источник