Scroll funktioniert nicht für mehrere RecyclerView in BottomSheet

8

Ich habe BottomSheet mit dem DialogFragment -Ansatz implementiert. Ich habe eine TabLayout und ViewPager in der BottomSheet . Das ViewPager hostet 2 Seiten, jedes bläst RecyclerView auf. Die erste (Registerkarte "Kaffee") RecyclerView scrollt gut. Das Problem, das ich jetzt habe, ist, dass für die 2. (Milch-Registerkarte) die Schriftrolle nicht funktioniert. Irgendeine Idee wie ich das beheben kann? Danke!

Sie können das Demo-Projekt ausprobieren, das ich hier erstellt habe: Ссылка

    
You Qi 05.09.2016, 08:11
quelle

4 Antworten

6

Wie von R. Zagórski erwähnt, habe ich hier den Grund für dieses Scroll-Verhalten beschrieben, dh nur BottomSheetBehavior unterstützt ein scrollendes Kind. Diese Antwort konzentrierte sich jedoch nicht auf Bottom-Sheet-Dialoge.

Daher habe ich - genau wie R. Zagórski - meine eigene Bibliothek erweitert, die diese Einschränkung überwindet. Beginnend mit 0.0.3 gibt es Unterstützung für Bottom Sheet Dialoge! Sie können die Bibliothek und die Beispiel-App hier finden: Ссылка

Um es in Ihrem Projekt zu verwenden, fügen Sie einfach die maven repo url zu Ihrem build.gradle hinzu:

%Vor%

Fügen Sie die Bibliothek zu den Abhängigkeiten hinzu:

%Vor%

Verwenden Sie ViewPagerBottomSheetDialogFragment als Superklasse für Dialogfragmente. Dann richten Sie einen beliebigen ViewPager in der Inhaltsansicht ein:

%Vor%

    
laenger 08.09.2016, 22:13
quelle
3

Beim Versuch, nach dem Problem auf StackOverflow zu suchen, habe ich diesen Thread gefunden. Es zeigt über den Fehler (zumindest so sehe ich es), dass BottomSheetBehaviour nur für das erste scrollbare Kind funktioniert, das es findet. Es schlägt auch die Verwendung verschiedener CoordinatorLayout.Behavior vorgeschlagen und veröffentlicht hier .

Allerdings ist Ihr Fall ein bisschen anders. BottomSheetDialogFragment wird verwendet. Und hier funktioniert die gelieferte Lösung nicht. Jedoch habe ich es geschafft, dieses Problem zu überwinden. Veröffentlichtes Repository , in dem Ihr Projekt geändert wurde, damit es funktioniert. Es verwendet das ViewPagerBottomSheetBehavior aus der zuvor erwähnten Bibliothek.

Grundsätzlich wurden die folgenden Änderungen vorgenommen:

  1. StatisticFragment erweitert ViewPagerBottomSheetDialogFragment und nicht BottomSheetDialogFragment
  2. Die Funktion onCreateDialog in StatisticsFragment wurde geändert:

    %Vor%
  3. Die folgende Funktion wird für ViewPager :

    aufgerufen %Vor%

Und das ist alles. Das Projekt funktioniert.

  

Folgendes geschieht hinter den Kulissen:

BottomSheetDialogFragment hat nur eine Methode:

%Vor%

Dort wird BottomSheetDialog zurückgegeben. Es wurde jedoch ein statisch definiertes Verhalten auf BottomSheetBehavior festgelegt. Was benötigt wurde, war ViewPagerBottomSheetDialogFragment zu überschreiben, um ViewPagerBottomSheetDialog zurückzugeben, wobei CoordinatorLayout.Behavior auf ViewPagerBottomSheetBehavior gesetzt wurde. Außerdem musste die benutzerdefinierte BottomSheet überschrieben werden, um sie an ViewPagerBottomSheetBehavior anzupassen.

    
R. Zagórski 08.09.2016 14:11
quelle
0

Sie müssen StatisticFragment nicht als ViewPagerBottomSheetDialogFragment erweitern oder müssen keine Bibliothek dafür verwenden.

Es ist dein Code, ich habe gerade einige Änderungen an deinem Static Fragment bezogen auf View Pager.

vorgenommen

Hier ist der Statistic Fragment , in dem ich Änderungen vorgenommen habe.

Es gibt keine Fehler wie in allen obigen Antworten angegeben.

Ersetzen Sie diesen Code durch Ihre alte Static fragment nur keine anderen Änderungen, es wird Ihnen die gewünschte Ausgabe geben.

Ich habe gerade Änderungen nur mit Ihrem View Pager vorgenommen und es so eingerichtet, wie Sie es möchten. verwendet OnPageChangeListener Methode nur diese Ansicht zu bekommen.

Statistisches Fragment.java

%Vor%

Es ist erledigt.

    
Jay Rathod RJ 09.09.2016 06:00
quelle
0

Sie können 2 RecyclerView in CoordinatorLayout verwenden.

%Vor%

Überprüfen Sie diesen Beitrag Link

    
Rasoul Miri 04.12.2017 07:58
quelle

Tags und Links