Ich erstelle eine EPG-ähnliche Ansicht, für die ich mehrere horizontale RecyclerView
s (als TV-Programme) in einem LinearLayout gekapselt habe. Wenn ich einen der RecyclerView blättern möchte, möchte ich, dass der Rest der Ansichten zusammen gescrollt wird.
Ich habe versucht, meinen Ansichten einen Scroll-Listener hinzuzufügen, aber ich bin verwirrt mit der Methode RecyclerView.OnScrollListener
onScrolled , da ich nicht herausfinden kann, wie man durch andere Ansichten blättert.
Jede Hilfe / Anregung wäre hilfreich.
HorizontelScrollView
{
Lineares Layout
{
Vertikale Liste der horizontalen Recycler-Ansichten, überschreibt das LayoutManager-Layout der horizontalen Recycleransicht canScroolhorizontal () -Methode, um false zurückzugeben, so dass sie alle scrollen zusammen nach der Großeltern ScrollView.
}
Unser Hauptaugenmerk liegt darauf, diese vertikale Liste der horizontalen Recycler-Ansichten horizontal zu scrollen, Zuerst habe ich versucht, alle auf einer horizontalen Scroll-Ansicht zu halten, aber das ist etwas, was das Android-System klar ablehnt, also habe ich ein lineares Layout (in meinem Fall vertikal ausgerichtet) als Vermittler behalten.
Damit kann das epg-Raster jetzt vertikal in einer vertikalen Recycler-Ansicht sowie horizontal in der horizontalen Scroll-Ansicht verschoben werden. und wir sollten horizontalen Listen nicht erlauben unabhängig zu scrollen, also habe ich den Layoutmanager erweitert und das horizontale Scrollen verboten, jetzt scrollen sie nur noch unter grandParent scroll.
Sie müssen die Position der aktuellen Elemente in horizontalen Recycler-Ansichten immer neu berechnen (nächste h.r.v.) Nach dem Scrollen in einem h.r.v. Berechnung der Positionen anderer basierend auf einer geringen Anzahl von Scroll-Bewegungen, die in berührten h.r.v.
Überschreiben Sie dann onViewAttachedToWindow
im Adapter und verwenden Sie die Methode scrollToPositionWithOffset
von LinearLayoutManager
von besonders h.r.v, um sie auf die richtige Position zu setzen.
Vergessen Sie auch nicht, bei der Berechnung von Bewegung dx onScrolled
method zu deaktivieren, wenn der Finger gedrückt ist, um die Mehrfachbehandlung desselben Ereignisses zu vermeiden.
FlexboxLayout
(von Google erstellt) können Sie mit einem RecyclerView
und einem FlexboxLayoutManager
. Seit der Version 3.0 (28. Juni 2017) kannst du sie horizontal ziehen.
Für dein Beispiel verwende es wie folgt:
%Vor% Und vergessen Sie nicht, die Breite von RecyclerView
auf eine größere Zahl als die Bildschirmgröße zu setzen, um scrollen zu können, verwenden Sie nicht match_parent
:
Hinweis : Die ViewHolders
werden von Zeilen und nicht von Spalten wiederverwendet. Seien Sie also vorsichtig, wenn Sie zu lange Elemente in einem sehr langen RecyclerView
Tags und Links android scroll android-recyclerview epg