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
So sieht es nach dem Scrollen aus.
Da dies ein ViewPager
ist, wenn ich auf die Registerkarte FINANZ wische, sieht es folgendermaßen aus:
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?
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 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
Hoffen Sie, dass es hilft
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?
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.
Tags und Links android