Як уже було сказано, найпростішим рішенням є просто додати одне з наведених нижче як RecyclerView
тло вашого рядка:
android:background="?android:attr/selectableItemBackground"
android:background="?attr/selectableItemBackground"
Однак якщо у вас виникли проблеми з цим методом або ви хочете більш тонкий контроль над кольорами, то можете зробити наступне.
Спеціальний ефект Ripple
Ця відповідь починається з цього простого прикладу Android RecyclerView . Це буде виглядати як наступне зображення.
Додайте селектор для попередніх пристроїв API 21
Перед API 21 (Android 5.0 Lollipop) натискання RecyclerView
елемента просто змінило колір тла (ефекту пульсації). Це ми також будемо робити. Якщо у вас все ще є користувачі з цими пристроями, вони звикли до такої поведінки, тому ми не будемо надто їх хвилювати. (Звичайно, якщо ви теж хочете ефекту пульсацій для них, ви можете скористатися спеціальною бібліотекою .)
Клацніть правою кнопкою миші вашу res/drawable
папку і виберіть Створити> Drawable файл ресурсів . Зателефонуйте custom_ripple
. Клацніть OK і вставте наступний код.
custom_ripple.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape android:shape="rectangle">
<solid android:color="@color/colorAccent" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent" />
</shape>
</item>
</selector>
Я використовував colorAccent
як колір виділення для натиснутого стану, оскільки він уже був доступний, але ви можете визначити, який колір ви хочете.
Додати ефект Ripple для пристроїв API 21+
Клацніть правою кнопкою миші вашу res/drawable
папку і виберіть Створити> Drawable файл ресурсів . Зателефонуйте custom_ripple
ще раз. Не натискайте ОК, однак цього разу. У списку Доступні класифікатори виберіть Версія , потім натисніть кнопку >> та напишіть 21
для рівня API платформи . Тепер натисніть кнопку OK і вставте наступний код.
v21 / custom_ripple.xml
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/colorAccent">
<item
android:id="@android:id/mask"
android:drawable="@android:color/white" />
</ripple>
Знову ж таки, я використовував colorAccent
для пульсації колір, тому що він був доступний, але ви можете використовувати будь-який колір, який ви хочете. Маска обмежує ефект пульсації лише компонуванням рядків. Колір маски, мабуть, не має значення, тому я просто використовував непрозорий білий.
Встановити як тло
У кореневому макеті вашого елемента RecyclerView встановіть фон для створеної нами власної пульсації.
android:background="@drawable/custom_ripple"
У прикладі проекту, з якого ми розпочали, це виглядає приблизно так:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="@drawable/custom_ripple"
android:padding="10dp">
<TextView
android:id="@+id/tvAnimalName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"/>
</LinearLayout>
Готово
Це воно. Ви повинні мати можливість запустити свій проект зараз. Завдяки цій відповіді та цьому відео YouTube на допомогу.
CardView
питання в цьому питанні, ніж вони не стосуються цього більш загального питання.