Wie man die Symbolleiste wieder sichtbar macht, die vorher mit layout_scrollFlags ausgeblendet wurde, wenn man auf eine andere viewpager Seite wischt [duplizieren]

8

Zur Zeit habe ich die folgende Seite mit ViewPager

Wenn die Seite auf der Registerkarte INFO gescrollt wird, wird die Symbolleiste ausgeblendet. Dieses Verhalten wird über CoordinatorLayout , AppBarLayout und app:layout_scrollFlags

implementiert %Vor%

So sieht es nach dem Scrollen aus.

Nach dem Scrollen ist die Werkzeugleiste ausgeblendet

Da dies ein ViewPager ist, wenn ich auf die Registerkarte FINANZ wische, sieht es folgendermaßen aus:

Gefolgt von Swipe

Da die Seite auf der Registerkarte FINANZ nicht blätterbar ist, möchten wir die Toolbar nicht ausblenden.

Ich habe mich gefragt, wie man die Werkzeugleiste wieder sichtbar macht, die vorher mit layout_scrollFlags ausgeblendet wurde, wenn man auf eine andere ViewPager Seite wischt?

    
Cheok Yan Cheng 26.09.2017, 20:43
quelle

6 Antworten

5

Sie können es so machen:

%Vor%

Wenn sich der viewPager in einer nicht sortierbaren Seite befindet, wird er expandiert und die Symbolleiste erscheint

    
Marzieh Heidari 28.09.2017, 22:24
quelle
1

@Marzieh Heidari Antwort ist die richtige Antwort für diese Frage, aber ich teile meinen anderen Ansatz, den ich in meinem Projekt verwende, um dieses Problem zu lösen.

In dem Fragment, das einen kurzen Inhalt hat, behalte ich NestedScrollView bei root. Dann kann ich noch nach oben / unten scrollen, um die Symbolleiste ein- und auszublenden

%Vor%

Hoffen Sie, dass es hilft

    
Phan Van Linh 29.09.2017 08:01
quelle
0

Vielleicht können Ihnen hier die Anwendungslebenszyklusereignisse helfen, indem Sie die Last des neuen Bildschirms abfangen und die Symbolleiste an diesem Punkt programmatisch zur Anzeige bringen?

    
Leo Muller 03.10.2017 12:17
quelle
0

Sie müssen die Werkzeugleiste erweitern, wenn der Benutzer zur zweiten Registerkarte wischt und die Werkzeugleiste nicht scrollbar macht

%Vor%     
SiSa 03.10.2017 15:23
quelle
0

Ich mag was Marzieh Heidari vorgeschlagen hat, aber ich würde gerne meine Gedanken dazu hinzufügen, da ich einer gegenüberstand ähnliches Problem und implementiert einige zusätzliche Funktionalität.

Zuallererst sollten Sie bedenken, dass es viele Möglichkeiten gibt, wie ein Scroll passieren kann, auch wenn in Ihrem aktuellen ScrollView kein Fragment vorhanden ist. Dies kann auf einigen Geräten passieren, dh bei der Erstellung (könnte in der Freizeit passieren) in Ihrem AppBarLayout der requestChildRectangleOnScreen kann aufgerufen werden und wenn Sie sich den Quellcode ansehen, werden Sie feststellen, dass unter bestimmten Umständen Ihr Vertrag automatisch geschlossen wird Toolbar (das ist was mir passiert ist).

Im Zuge dessen habe ich auch bemerkt, dass es möglich ist, die Toolbar zu ziehen und mit scrollFlags="scroll|enterAlways|snap" können Sie Ihre Toolbar verkleinern (hochschieben). Sie können es einfach in Ihrer App testen, indem Sie einfach auf dem Toolbar (auch auf der Registerkarte "FINANCIAL" ) nach oben streichen.

Für diese beiden Probleme gibt es eine sehr einfache Lösung, die das scrollFlags programmatisch ändert. Danach wirst du nicht mehr in der Lage sein, deine Toolbar (auch nicht zufällig) nach oben zu schieben, und das System wird es auch nicht nach oben schieben.

Programmgesteuert können Sie löschen scrollFlags , indem Sie sie auf 0 setzen, und andererseits wird der Code sie wiederherstellen, wenn Sie auf die andere Registerkarte wechseln.

%Vor%     
quelle
0

Du hast eine doppelte Frage gestellt. Die Antwort Ihrer Frage ist verfügbar hier

%Vor%     
SANAT 05.10.2017 09:04
quelle

Tags und Links