Wie bekomme ich Touch-Feedback von RecyclerView?

8

Ich habe eine ReyylerView implementiert und ich kann nicht herausfinden, wie man Berührungsrückmeldung erhält (der Welleneffekt davon).

Hier ist, was ich für den onClickListener getan habe:

%Vor%

Und ich habe sowohl klickbare & amp; fokussierbar auf mein XML. Dies ist, was die Recycleransicht aufbläht:

%Vor%     
Sree 23.01.2015, 00:10
quelle

2 Antworten

25

Sie müssen eine wellige Zeichenkette als Hintergrund festlegen:

%Vor%

ripple.xml:

%Vor%

Sie müssen das Zeichen möglicherweise maskieren:

%Vor%

Dies erzeugt eine einfache graue Welle bei Berührung (hier ist ein Handbuch , wenn Sie weitere Anweisungen benötigen).

RippleDrawable wurde in der SDK-Version 21 (Lollipop) hinzugefügt. Die Verwendung von Ripple, das auf Pre-Lollipop gezeichnet werden kann, führt zum Absturz der App. Verwenden Sie entweder einen einfachen Selektor für Pre-Lollipop-Geräte oder verwenden Sie Bibliotheken, die den Effekt neu erstellen. ( GitHub )

UPDATE: Mit diesem Code können Sie den Welleneffekt leicht erreichen:

%Vor%

oder wenn Sie die Rechteckmaske nicht möchten:

%Vor%

Dies ist kompatibel mit Pre-Lollipop-Geräten und wird uns einen einfachen Selektor. Ich glaube, dass dies helle Wellen in Apps mit dunklem Thema erzeugen wird und umgekehrt, also wenn Sie eine benutzerdefinierte farbige Welligkeit wollen, müssen Sie immer noch eine wellige Zeichenkette erstellen.

    
Longi 23.01.2015, 19:50
quelle
1

Zusätzlich zu @ Longis Antwort: Wenn Sie möchten, dass Ihr RecyclerViews Item einen eigenen Hintergrund hat und gleichzeitig den Welleneffekt hat, können Sie wie im folgenden Beispiel gezeigt: recycler_view_item.xml:

%Vor%

In diesem Beispiel ist @ drawable / recyclerview_item_background ein PNP mit neun Patches, aber Sie können hier einen beliebigen Hintergrund verwenden.

In meinem Fall, als ich android: background="? attr / selectableItemBackground" verwendet habe, hatte das root-lineare Layout des RecyclerView-Elements den Welleneffekt, aber der Hintergrund des untergeordneten linearen Layouts überlappte und verdeckte den Ripple-Effekt.

    
ulughbekula 01.06.2016 23:30
quelle