Daha önce yanıtlandığı gibi, en basit çözüm aşağıdakilerden birini RecyclerView
satı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/drawable
Klasö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>
colorAccent
Bası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/drawable
Klasörünüzü sağ tıklayın ve Yeni> Çekilebilir kaynak dosyası'nı seçin . Diyelim custom_ripple
yine. Yine de bu sefer Tamam'ı tıklamayın. Gönderen Mevcut eleme listesi seçim Sürüm , ardından >> düğmesini ve yazma 21
iç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 colorAccent
dalgalanma 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 .