Daha önce yanıtlandığı gibi, en basit çözüm aşağıdakilerden birini RecyclerViewsatırınızın arka planı olarak eklemektir :
android:background="?android:attr/selectableItemBackground"
android:background="?attr/selectableItemBackground"
Ancak bu yöntemle ilgili sorunlar yaşıyorsanız veya renkler üzerinde daha iyi kontrol istiyorsanız, aşağıdakileri yapabilirsiniz.
Özel Dalgalanma Etkisi
Bu cevap, bu basit Android RecyclerView örneğiyle başlıyor . Aşağıdaki resme benzeyecek.

API 21 öncesi cihazlar için seçici ekleyin
API 21'den (Android 5.0 Lollipop) önce, bir RecyclerViewöğeye tıklamak , arka plan rengini değiştiriyordu (dalgalanma etkisi yok). Biz de bunu yapacağız. Hala bu cihazlara sahip kullanıcılarınız varsa, bu davranışa alışmışlardır, bu yüzden onlar için çok fazla endişelenmeyeceğiz. (Tabii ki onlar için de dalgalanma efektini gerçekten istiyorsanız, özel bir kitaplık kullanabilirsiniz .)
res/drawableKlasörünüzü sağ tıklayın ve Yeni> Çekilebilir kaynak dosyası'nı seçin . Bunu aramakcustom_ripple . Tamam'ı tıklayın ve aşağıdaki kodu yapıştırın.
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>
colorAccentBasılmış durum için vurgu rengi olarak kullandım çünkü zaten mevcuttu, ancak istediğiniz rengi tanımlayabilirsiniz.
API 21+ cihazlar için Ripple Effect ekleyin
res/drawableKlasörünüzü sağ tıklayın ve Yeni> Çekilebilir kaynak dosyası'nı seçin . Diyelim custom_rippleyine. Yine de bu sefer Tamam'ı tıklamayın. Gönderen Mevcut eleme listesi seçim Sürüm , ardından >> düğmesini ve yazma 21için Platform API düzeyinde . Şimdi Tamam'ı tıklayın ve aşağıdaki kodu yapıştırın.
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>
Yine colorAccentdalgalanma rengi için kullandım çünkü mevcuttu, ancak istediğiniz rengi kullanabilirsiniz. Maske, dalgalanma efektini yalnızca satır düzeniyle sınırlar. Görünüşe göre maske rengi önemli değil bu yüzden sadece opak bir beyaz kullandım.
Arka plan olarak ayarla
RecyclerView öğenizin kök düzeninde, arka planı oluşturduğumuz özel dalgalanmaya ayarlayın.
android:background="@drawable/custom_ripple"
Başladığımız örnek projede şöyle görünüyor:
<?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>
Bitti
Bu kadar. Şimdi projenizi çalıştırabilmelisiniz. Bu cevaba ve yardım için bu YouTube videosuna teşekkürler .
CardView, bu soruda a'ya sahip olmanın, bu daha genel soru ile ilgili olmayan bazı yönleri vardır .