Ich versuche, etwas über das Android-Betriebssystem zu erfahren, und während ich die Google I / O 2014 App gelesen habe, bin ich auf das WindowInsets
gestoßen. Wenn jemand erklären kann, was sie sind, dann wäre es eine große Hilfe. Danke.
Sie können alles über WindowInsets hier erfahren. WindowInsets
stellt Ihnen den Bereich on zur Verfügung das Fenster, das von der Anwendung verwendet werden kann. Für sich genommen ist es nicht von großem Nutzen. Der wahre Zweck kommt, wenn Sie View.onApplyWindowInsets
entweder außer Kraft setzen oder View.OnApplyWindowInsetsListener
implementieren. Sie können über sie hier lesen: View.onApplyWindowInsets und View.OnApplyWindowInsetsListener
Listener zum benutzerdefinierten Anwenden von Fenstereinschüben auf eine Ansicht.
Apps können diese Schnittstelle implementieren, wenn sie angewendet werden sollen Benutzerdefinierte Richtlinie für die Art und Weise, wie Fenstereinfügungen für eine Ansicht behandelt werden. Ob Ein OnApplyWindowInsentsListener ist festgelegt, seine onApplyWindowInsets-Methode wird anstelle der eigenen OnApplyWindowInsets-Methode der View aufgerufen. Der Listener kann optional den Parameter View's aufrufen onApplyWindowInsets-Methode zum Anwenden des normalen Verhaltens der Ansicht als Teil für sich.
Kurz gesagt: Wenn Sie dies überschreiben, können Sie den Bereich des für Ihre Ansicht verfügbaren Fensters steuern.
WindowInsets
sind Einsätze (oder Größen) von Systemansichten (z. B. Statusleiste, Navigationsleiste), die auf das Fenster angewendet werden.
Am konkreten Beispiel wäre das leicht zu verstehen. Stellen Sie sich dieses Szenario vor:
Nun möchten Sie nicht, dass WindowInsets
auf den Hintergrund ImageView
angewendet wird, weil in diesem Fall ImageView
durch die Höhe der Statusleiste aufgefüllt würde.
Sie möchten aber, dass Toolbar
mit Einsätzen versehen wird, weil sonst Toolbar
irgendwo in der Mitte der Statusleiste angezeigt würde.
Die Ansicht erklärt den Wunsch, WindowInsets
in xml anzuwenden, indem sie sagt:
In diesem Beispiel können Sie WindowInsets
nicht auf das root-Layout anwenden, da das root-Layout WindowInsets
und die ImageView
würden aufgefüllt werden.
Stattdessen können Sie ViewCompat.setOnApplyWindowInsetsListener
verwenden, um auf die Werkzeugleiste Einsätze anzuwenden:
Beachten Sie, dass dieser Callback aufgerufen wird, wenn das Root-Layout von Toolbar
WindowsInsets
an seine untergeordneten Elemente übergibt. Layouts wie FrameLayout
, LinearLayout
nicht, DrawerLayout
, CoordinatorLayout
tun.
Sie können Ihr Layout unterklassifizieren, z. FrameLayout
und überschreiben onApplyWindowInsets
:
Es gibt einen schönen Blogbeitrag auf Medium von Ian Lake in Bezug auf dieses Zeug, auch "Ein Master-Fenster fitter
Tags und Links java android android-layout android-view windowinsets