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: Ссылка
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:
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:
StatisticFragment
erweitert ViewPagerBottomSheetDialogFragment
und nicht BottomSheetDialogFragment
Die Funktion onCreateDialog in StatisticsFragment
wurde geändert:
Die folgende Funktion wird für ViewPager
:
Und das ist alles. Das Projekt funktioniert.
Folgendes geschieht hinter den Kulissen:
BottomSheetDialogFragment
hat nur eine Methode:
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.
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.
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.
Sie können 2 RecyclerView in CoordinatorLayout verwenden.
%Vor%Überprüfen Sie diesen Beitrag Link
Tags und Links android bottom-sheet