Ich versuche, etwas über das Android-Betriebssystem zu lernen und während ich die Google I/O 2014 App gelesen habe, bin ich auf die WindowInsets
gestoßen. Wenn jemand erklären kann, was sie sind, dann wäre es eine große Hilfe. Vielen Dank.Was sind WindowInsets?
Antwort
Sie können alles über WindowInsets here. lernen WindowInsets
bietet Ihnen den Bereich auf dem Fenster, die von der Anwendung verwendet werden kann. Für sich genommen ist es nicht von großem Nutzen. Der wahre Zweck kommt, wenn Sie entweder View.onApplyWindowInsets
überschreiben oder View.OnApplyWindowInsetsListener
implementieren. Sie können hier über sie lesen: View.onApplyWindowInsets und View.OnApplyWindowInsetsListener
Listener für in einer benutzerdefinierten Art und Weise auf einem Sichtfenster Einsätze Anwendung.
Apps können diese Schnittstelle implementieren, wenn sie die benutzerdefinierte Richtlinie auf die Art und Weise anwenden möchten, wie Fenstereinfügungen für eine Ansicht behandelt werden. Wenn ein OnApplyWindowInsentsListener festgelegt ist, wird seine onApplyWindowInsets-Methode anstelle der eigenen onApplyWindowInsets-Methode des Views aufgerufen. Der Listener kann optional den Parameter Views onApplyWindowInsets aufrufen, um das normale Verhalten der View als Teil zu übernehmen.
Kurz gesagt, durch Ü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.
Es wäre leicht zu konkreten Beispiel zu verstehen. Bild dieses Szenario:
Nun wollen Sie nicht WindowInsets
auf den ImageView
Hintergrund angewendet werden, da in diesem Fall die ImageView
würde durch Statusleiste Höhe aufgefüllt werden.
Aber Sie wollen, dass Einsätze auf Toolbar
angewendet werden, weil sonst Toolbar
würde irgendwo Mitte Statusleiste gezeichnet werden.
Der Blick erklärt den Wunsch WindowInsets
in xml anzuwenden, indem er sagte:
android:fitsSystemWindows="true"
In diesem Beispiel nicht die WindowInsets
an die Wurzel Layout anwenden können, weil die Wurzel Layout WindowInsets
verbrauchen würde, und die ImageView
wäre gepolstert.
Stattdessen können Sie ViewCompat.setOnApplyWindowInsetsListener
verwenden Einsätze gelten Symbolleiste:
ViewCompat.setOnApplyWindowInsetsListener(toolbar, (v, insets) -> {
((ViewGroup.MarginLayoutParams) v.getLayoutParams()).topMargin =
insets.getSystemWindowInsetTop();
return insets.consumeSystemWindowInsets();
});
Hinweis, dieser Rückruf genannt werden würde, wenn Toolbar
‚s Wurzel Layout WindowsInsets
seiner Kinder geht. Layouts wie FrameLayout
, LinearLayout
nicht, DrawerLayout
, CoordinatorLayout
tun.
Sie können Ihr Layout, z.FrameLayout
und außer Kraft setzen onApplyWindowInsets
:
@TargetApi(Build.VERSION_CODES.KITKAT_WATCH)
@Override
public WindowInsets onApplyWindowInsets(WindowInsets insets) {
int childCount = getChildCount();
for (int index = 0; index < childCount; index++)
getChildAt(index).dispatchApplyWindowInsets(insets); // let children know about WindowInsets
return insets;
}
Es gibt eine nice blog post at medium von Ian See dieses Zeug über, auch "Becoming a master window fitter" Präsentation von Chris Banes.
Ich habe auch a detailed article at Medium über WindowInset
s erstellt.
Weitere Informationen:
- 1. Was sind Einsätze in Android?
- 2. In Android, was sind Fenstereinsätze?
- 3. Was sind Konzepte?
- 4. Was sind NDF-Dateien?
- 5. Was sind WPF-Vorschauereignisse?
- 6. Was sind Futures?
- 7. Was sind current_user_can() Funktionsparameter?
- 8. Was sind Iteratoren, C++?
- 9. Was sind Optionen + FolgenSymLinks?
- 10. Was sind meine Umgebungsvariablen?
- 11. Was sind gute Codebereitstellungsstrategien?
- 12. Was sind eingeschränkte Vorlagen?
- 13. Was sind Downward-Funargs?
- 14. Was sind Optionen-Hashes?
- 15. Was sind "dringende Daten"?
- 16. Was sind ". ~ Bpl" Dateien?
- 17. Was sind "" in OCaml?
- 18. Was sind Skriptsprachen?
- 19. Was sind gehobene Bediener?
- 20. Was sind Finisher für?
- 21. Was sind FTL-Dateien?
- 22. Was sind ASP.NET-Mitgliedschaftsalternativen
- 23. Was sind Bereichssperren?
- 24. Was sind Gewinde?
- 25. Was sind die Werte?
- 26. Was sind CoreDataGeneratedAccessors?
- 27. Bildverarbeitung: Was sind Okklusionen?
- 28. Was sind m2e Anschlüsse?
- 29. Was sind statische Variablen?
- 30. Was sind empfohlene Gesichtserkennungsbibliotheken?
So um den Einsatz in einer Linearlayout ich es anwenden müssen Unterklasse richtig? – lupsyn