Ich versuche den RecyclerView in einer Android App zu verwenden. Ich habe das RecyclerView-Beispielprojekt in Android Studio importiert und es funktioniert einwandfrei.
Ich möchte, dass die Elemente in der Recycler-Ansicht visuell darauf reagieren, wenn der Benutzer sie lange drückt. Um dies zu tun, setze ich den Hintergrund der Ansicht auf selectableItemBackground
. Ich habe diese Änderungen vorgenommen:
in der Datei text_row_item.xml habe ich diese Zeile im Tag FrameLayout hinzugefügt:
android:background="?android:attr/selectableItemBackground"
Innerhalb von CustomAdapter.java habe ich einen Long-Click-Listener auf dem FrameLayout hinzugefügt:
v.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
Log.d(TAG, "Element " + getPosition() + " long clicked.");
return true;
}
});
Wenn ich das modifizierte Beispiel auf einem Lollipop-Emulator ausführe, bekomme ich den schönen Welleneffekt, wenn ich die Elemente in der Recycler-Ansicht lange drücke.
Aber wenn ich die App auf einem KitKat-Emulator ausführe, bekomme ich den Glow-Effekt von KitKat nicht. Das Element in der Liste wird dunkler, wenn ich es lange drücke, und der Long-Klick-Listener wird ausgeführt, aber ich habe erwartet, dass die Farbe leuchtet, wenn der lange Druckvorgang ausgeführt wird.
Hier ist ein Gif von dem, was ich sehe:
Warum führt selectableItemBackground
den Glow-Effekt auf KitKat nicht aus? Wie kann ich es sowohl mit KitKat als auch mit Lollipop arbeiten lassen?
Ich hatte das gleiche Problem, als ich android:Theme.Holo.Light.DarkActionBar
style verwendet habe. Nach dem Ändern in android:Theme.Material.Light.DarkActionBar
funktioniert der Ripple-Effekt.
Also musste ich nur hinzufügen:
%Vor% in application
node in Manifest.xml
Oder wenn Sie eine benutzerdefinierte styles.xml
verwenden, können Sie einfach parent="android:Theme.Material.Light.DarkActionBar"
Tags und Links android android-recyclerview