Wie bereits beantwortet, besteht die einfachste Lösung darin, eine der folgenden RecyclerView
Optionen als Hintergrund für Ihre Zeile hinzuzufügen :
android:background="?android:attr/selectableItemBackground"
android:background="?attr/selectableItemBackground"
Wenn Sie jedoch Probleme mit dieser Methode haben oder eine genauere Kontrolle über die Farben wünschen, können Sie Folgendes tun.
Benutzerdefinierter Welleneffekt
Diese Antwort beginnt mit diesem einfachen Android RecyclerView-Beispiel . Es sieht wie im folgenden Bild aus.
Selektor für Geräte vor API 21 hinzufügen
Vor API 21 (Android 5.0 Lollipop) hat das Klicken auf ein RecyclerView
Element nur seine Hintergrundfarbe geändert (kein Welleneffekt). Das werden wir auch tun. Wenn Sie noch Benutzer mit diesen Geräten haben, sind diese an dieses Verhalten gewöhnt, sodass wir uns nicht zu viele Sorgen um sie machen müssen. (Wenn Sie den Ripple-Effekt auch für sie wirklich nutzen möchten, können Sie natürlich eine benutzerdefinierte Bibliothek verwenden .)
Klicken Sie mit der rechten Maustaste auf Ihren res/drawable
Ordner und wählen Sie Neu> Zeichnungsressourcendatei . Nennen Sie es custom_ripple
. Klicken Sie auf OK und fügen Sie den folgenden Code ein.
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>
Ich habe colorAccent
als Hervorhebungsfarbe für den Druckzustand verwendet, da dieser bereits verfügbar war, aber Sie können jede gewünschte Farbe definieren.
Ripple-Effekt für API 21+ -Geräte hinzufügen
Klicken Sie mit der rechten Maustaste auf Ihren res/drawable
Ordner und wählen Sie Neu> Zeichnungsressourcendatei . Rufen Sie es noch custom_ripple
einmal an. Klicken Sie diesmal jedoch nicht auf OK. Von der Available - Qualifikationsliste Version und dann auf die >> Taste und schreibt 21
für die API - Ebene Plattform . Klicken Sie nun auf OK und fügen Sie den folgenden Code ein.
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>
Wieder habe ich colorAccent
für die Welligkeitsfarbe verwendet, weil sie verfügbar war, aber Sie können jede gewünschte Farbe verwenden. Die Maske beschränkt den Welligkeitseffekt nur auf das Zeilenlayout. Die Maskenfarbe spielt anscheinend keine Rolle, deshalb habe ich nur ein undurchsichtiges Weiß verwendet.
Als Hintergrund festlegen
Stellen Sie im Stammlayout Ihres RecyclerView-Elements den Hintergrund auf die von uns erstellte benutzerdefinierte Welligkeit ein.
android:background="@drawable/custom_ripple"
In dem Beispielprojekt , mit dem wir begonnen haben, sieht es folgendermaßen aus:
<?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>
Fertig
Das ist es. Sie sollten jetzt in der Lage sein, Ihr Projekt auszuführen. Dank dieser Antwort und diesem YouTube-Video für Hilfe.
CardView
Frage, die sich nicht auf diese allgemeinere Frage beziehen.