0

Ich habe eine vertikal scrollbare Liste mit einem RecyclerView. Das Layout, das ich versuche zu implementieren, ist, dass, wenn Sie weit genug nach unten scrollen und einen bestimmten Gegenstand erreichen, wenn Sie weiter an diesem Gegenstand vorbeiscrollen, er am unteren Bildschirmrand bleibt, während der Rest der Liste weiter dahinter scrollt. Momentan wird es implementiert, indem ein Scroll-Listener auf dem RecyclerView verwendet wird und die Position der Sticky-Ansicht nach Bedarf manuell angepasst wird, aber dies ist hacky und schwer aufzubauen.Lassen Sie ein Element auf dem Boden eines RecyclerView bleiben

Gibt es einen einfacheren Weg, diese Art von Layout zu haben? Ich untersuche gerade mit einem CoordinatorLayout, aber ich bin mir nicht sicher, ob es das richtige Werkzeug für den Job ist.

+0

Ich habe das nicht versucht, aber habe etwas ähnliches schon einmal gemacht. Klingt, als ob Sie dies in onBindViewHolder mit der Position und getItemViewType tun könnten - d. H., Wenn Sie an Position X vorbei blättern, wo das Element ist, wird jeder onBind-Aufruf nach "Sind wir vergangene Position X? && ist diese Position die letzte Position?" Wenn ja, gib einen Viewtyp zurück, der das Objekt ist, das du zeigen willst, ansonsten gib einen normalen zurück –

+0

@SaikCaskey Ich denke nicht, dass das die Flexibilität bieten würde, dass die Items teilweise hinter der Sticky View gescrollt werden. Wenn die Ansicht selbst immer noch nur ein Element in der Liste ist, können Sie nicht das nächste Element der Liste nach der klebrigen Ansicht scrollen. – Zarwan

+0

Sie sollten experimentieren und sehen - es gibt eine eingebaute Logik, um halb gescrollte Ansichten zu handhaben. Wenn Sie das nicht schaffen, sollten Sie vielleicht Ihre eigene Implementierung von RecyclerView durchführen und eine klebrige Ansicht erstellen? Ich bin mir sicher, dass etwas auf GitHub Ihnen helfen kann, loszulegen, und Sie haben bereits mit dem niedrigen Level zu tun. –

Antwort

1

Sie können dies mithilfe eines CoordinatorLayout mit einem benutzerdefinierten Verhalten erreichen. Das Verhalten sollte auf die klebrige Ansicht angewendet werden und es erscheinen/verschwinden, während der RecyclerView scrollt. Sie müssen onStartNestedScroll in Ihrem Verhalten überschreiben, um true zurückzugeben, um Aufrufe für Bildlaufänderungen zu empfangen.

+0

kannst du den Code posten –

+0

@Rahul Ich habe keinen Zugriff mehr darauf, dies wurde bei einem früheren Praktikum gemacht. – Zarwan

+0

eine Idee, wie es gemacht wurde? –

Verwandte Themen