Ich habe eine Recycleransicht mit vier Rasterelementen (2 * 2), die wie ein Menü funktionieren. Wenn ich jedoch auf sie klicke, wird kein Ripple-Effekt angezeigt. Es bringt mich nur zur nächsten Aktivität ohne visuelle Bestätigung, dass die Ansicht gedrückt wurde. Kann jemand helfen?
MainActivity
%Vor%Hauptadapter
%Vor%activity_main.xml
%Vor%main_item.xml
%Vor% Der Ripple-Effekt tritt auf (@Budius ist in seinem Kommentar falsch), wenn Sie den Hintergrund von main_item.xml auf ?android:selectableItemBackground
oder ?selectableItemBackground
setzen. Ich habe Hinweise auf den zweiten gefunden. AndroidStudio warnte jedoch davor, dass es sich um ein privates in com.android.support:design handelt. Meine App stürzte ab, als ich versuchte, diese private Version zu verwenden. Ich vermutete die erste mit dem Präfix "android:", und voila, es funktioniert.
Vielleicht setzen Sie android:foreground
versehentlich? Ich habe das ausprobiert, aber bei meinen RecyclerView-Produkten ist nichts passiert.
Ihr aktualisiertes RelativeLayout wäre:
%Vor% Ich habe auch android:background="?android:attr/selectableItemBackground"
gesehen, um die Welligkeit zu initiieren. Ich werde auch erwähnen, dass das selectableItemBackground nicht auf dem Root-Element der main_item.xml sein muss. Ich verwende eine Hintergrundfarbe im Root-Element und setze dann selectableItemBackground auf eine verschachtelte ViewGroup.
Meine Antwort kommt von einem Referenzrahmen, der NICHT das Materialdesign appcompat verwendet. Ich vermute, dass es einen Unterschied gibt, wenn Sie die AppCompat-Unterstützungsbibliothek für Materialdesign verwenden.
Tags und Links android android-layout android-recyclerview material-design rippledrawable