Scrollen Sie mehrere horizontale RecyclerView zusammen

8

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.

%Vor%

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.

    
waqaslam 04.08.2015, 14:56
quelle

3 Antworten

2

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.

    
Vikas Pandey 23.10.2015 13:39
quelle
1

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.

    
Matej Vukosav 17.11.2015 11:33
quelle
0

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 :

%Vor%

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

haben     
Mario Velasco 18.12.2017 17:49
quelle