Ich versuche, dem Element von RecyclerView einen Ripple-Effekt hinzuzufügen. Ich habe online nachgesehen, konnte aber nicht finden, was ich brauche. Ich gehe davon aus, dass es sich um einen benutzerdefinierten Effekt handeln muss. Ich habe das android: background-Attribut für RecyclerView selbst ausprobiert und auf "? Android: selectableItemBackground" gesetzt, aber es hat nicht funktioniert.:
<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"/>
Dies ist die RecyclerView, zu der ich den Effekt hinzufügen möchte:
android
android-animation
android-recyclerview
Georgi Koemdzhiev
quelle
quelle
CardView
Frage, die sich nicht auf diese allgemeinere Frage beziehen.Antworten:
Ich fand heraus. Das einzige, was ich tun musste, war dieses Attribut hinzuzufügen:
zum Stammelement des Layouts, das mein RecyclerView-Adapter so aufbläst:
Ergebnis:
Wenn Sie den Welligkeitseffekt immer noch nicht sehen können, fügen Sie diese Linien auch dem Stammelement des Layouts hinzu.
quelle
android:foreground="?android:attr/selectableItemBackground"
android:clickable="true"
auch hinzufügen , um diese Arbeit zu machenWie 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 escustom_ripple
. Klicken Sie auf OK und fügen Sie den folgenden Code ein.custom_ripple.xml
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 nochcustom_ripple
einmal an. Klicken Sie diesmal jedoch nicht auf OK. Von der Available - Qualifikationsliste Version und dann auf die >> Taste und schreibt21
für die API - Ebene Plattform . Klicken Sie nun auf OK und fügen Sie den folgenden Code ein.v21 / custom_ripple.xml
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.
In dem Beispielprojekt , mit dem wir begonnen haben, sieht es folgendermaßen aus:
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.
quelle
Ich denke, es gibt ein kleines Detail, das übersehen wird.
Wenn Sie nach dem Hinzufügen immer noch keinen Welligkeitseffekt erhalten
android:background="?android:attr/selectableItemBackground"
, fügen Sie die folgenden Zeilen im Stammverzeichnis des Layouts hinzu.Dadurch wird sichergestellt, dass die Ansicht anklickbar ist, und der Welligkeitseffekt mit dem oben genannten Hintergrundattribut wird aktiviert
quelle
Fügen Sie diese Zeilen in die Adapter-XML-Stammansicht ein
quelle
Ein einfacher und benutzerdefinierter Ansatz besteht darin, ein Ansichtsthema wie hier beschrieben festzulegen .
some_view.xml
some_style.xml
Weitere benutzerdefinierte Implementierungen finden Sie hier .
quelle
Verwenden eines Schaltflächenstils
Das hat bei mir unzählige Male funktioniert.
Fügen Sie den randlosen Schaltflächenstil zum Stammelement Ihres Layouts hinzu. Es gibt keine Notwendigkeit für
focusable
oderclickable
Attribute, die Standard - Styling alles , was für Sie kapselt.quelle