Die Android-Plattform ist für das Zeichnen der System-UI verantwortlich, z. B. der Statusleiste und der Navigationsleiste. Diese System-UI wird unabhängig davon angezeigt, welche App der Nutzer verwendet.
WindowInsets liefert Informationen zur System-UI, damit deine App im richtigen Bereich dargestellt wird und deine UI nicht von der System-UI verdeckt wird.
Unter Android 14 (API-Level 34) und niedriger wird die Benutzeroberfläche Ihrer App standardmäßig nicht unter den Systemleisten und Display-Aussparungen dargestellt.
Unter Android 15 (API-Level 35) und höher wird Ihre App unter den Systemleisten und Display-Aussparungen dargestellt, sobald sie auf SDK 35 ausgerichtet ist. Dies führt zu einer nahtloseren Nutzererfahrung und ermöglicht es Ihrer App, den verfügbaren Fensterbereich voll auszunutzen.
Das Anzeigen von Inhalten hinter der System-UI wird als randlos bezeichnet. Auf dieser Seite erfahren Sie mehr über die verschiedenen Arten von Insets, wie Sie den Edge-to-Edge-Modus aktivieren und wie Sie die Inset APIs verwenden, um Ihre UI zu animieren und dafür zu sorgen, dass die Inhalte Ihrer App nicht von System-UI-Elementen verdeckt werden.
Grundlagen zu Insets
Wenn eine App im Edge-to-Edge-Modus ausgeführt wird, müssen Sie dafür sorgen, dass wichtige Inhalte und Interaktionen nicht von der System-UI verdeckt werden. Wenn sich eine Schaltfläche beispielsweise hinter der Navigationsleiste befindet, kann der Nutzer sie möglicherweise nicht anklicken.
Die Größe der System-UI und Informationen zu ihrer Platzierung werden mithilfe von Insets angegeben.
Für jeden Teil der System-UI gibt es einen entsprechenden Typ von Inset, der die Größe und Position beschreibt. Die Statusleisten-Insets geben beispielsweise die Größe und Position der Statusleiste an, während die Navigationsleisten-Insets die Größe und Position der Navigationsleiste angeben. Jeder Typ von Inset besteht aus vier Pixeldimensionen: oben, links, rechts und unten. Diese Abmessungen geben an, wie weit sich die System-UI von den entsprechenden Seiten des App-Fensters erstreckt. Um eine Überlappung mit dieser Art von System-UI zu vermeiden, muss die App-UI um diesen Betrag eingerückt werden.
Diese integrierten Android-Inset-Typen sind über WindowInsets verfügbar:
Die Insets, die die Statusleisten beschreiben. Dies sind die oberen System-UI-Leisten mit Benachrichtigungssymbolen und anderen Indikatoren. |
|
Die Statusleisten-Insets, wenn sie sichtbar sind. Wenn die Statusleisten ausgeblendet sind (weil der immersive Vollbildmodus aktiviert ist), sind die Insets der Hauptstatusleiste leer, diese Insets sind jedoch nicht leer. |
|
Die Insets, die die Navigationsleisten beschreiben. Das sind die System-UI-Leisten auf der linken, rechten oder unteren Seite des Geräts, auf denen die Taskleiste oder Navigationssymbole angezeigt werden. Diese können sich zur Laufzeit ändern, je nachdem, welche Navigationsmethode der Nutzer bevorzugt und wie er mit der Taskleiste interagiert. |
|
Die Einzüge der Navigationsleiste, wenn sie sichtbar sind. Wenn die Navigationsleisten ausgeblendet sind (weil der immersive Vollbildmodus aktiviert ist), sind die Insets der Hauptnavigationsleiste leer, diese Insets jedoch nicht. |
|
Der Inset, der die Fensterdekoration der System-UI beschreibt, wenn sich das Fenster im Freiformmodus befindet, z. B. die obere Titelleiste. |
|
Die Einzüge der Untertitelleiste, wenn sie sichtbar ist. Wenn die Untertitelbalken ausgeblendet sind, sind die Hauptuntertitelbalken-Insets leer, diese Insets sind jedoch nicht leer. |
|
Die Vereinigung der Systemleisten-Insets, einschließlich Statusleisten, Navigationsleisten und Untertitelleiste. |
|
Die Einzüge der Systemleiste, wenn sie sichtbar sind. Wenn die Systemleisten ausgeblendet sind (weil der immersive Vollbildmodus aktiviert ist), sind die Haupt-Systemleisten-Insets leer, diese Insets jedoch nicht. |
|
Die Insets, die den Platzbedarf der Bildschirmtastatur am unteren Rand beschreiben. |
|
Die Insets, die den Platzbedarf der Bildschirmtastatur vor der aktuellen Tastaturanimation beschreiben. |
|
Die Insets, die den Platzbedarf der Bildschirmtastatur nach der aktuellen Tastaturanimation beschreiben. |
|
Eine Art von Insets, die detailliertere Informationen zur Navigations-UI enthalten und angeben, wie viel Platz für „Tippen“ vom System und nicht von der App verarbeitet wird. Bei transparenten Navigationsleisten mit Bedienung über Gesten können einige App-Elemente über die Systemnavigations-UI angetippt werden. |
|
Die Einzüge des antippbaren Elements, wenn es sichtbar ist. Wenn die antippbaren Elemente ausgeblendet sind (weil der immersive Vollbildmodus aktiviert wurde), sind die Insets der antippbaren Hauptelemente leer, diese Insets sind jedoch nicht leer. |
|
Die Insets, die die Anzahl der Insets darstellen, bei denen das System Gesten für die Navigation abfängt. Apps können manuell festlegen, dass eine begrenzte Anzahl dieser Touch-Gesten mit |
|
Eine Teilmenge der System-Gesten, die immer vom System verarbeitet werden und nicht mit |
|
Die Abstände, die erforderlich sind, um Überschneidungen mit einer Display-Aussparung (Notch oder Pinhole) zu vermeiden. |
|
Die Einsätze, die die gekrümmten Bereiche eines Waterfall-Displays darstellen. Ein Waterfall-Display hat gebogene Bereiche an den Rändern des Bildschirms, die sich um die Seiten des Geräts legen. |
Diese Typen werden in drei „sicheren“ Inset-Typen zusammengefasst, die dafür sorgen, dass Inhalte nicht verdeckt werden:
Diese „sicheren“ Inset-Typen schützen Inhalte auf unterschiedliche Weise, je nach den zugrunde liegenden Plattform-Insets:
- Verwende
WindowInsets.safeDrawing, um Inhalte zu schützen, die nicht unter der System-UI dargestellt werden sollen. Dies ist die häufigste Verwendung von Insets: um zu verhindern, dass Inhalte gezeichnet werden, die von der System-UI (entweder teilweise oder vollständig) verdeckt werden. - Verwenden Sie
WindowInsets.safeGestures, um Inhalte mit Gesten zu schützen. So wird verhindert, dass System-Gesten mit App-Gesten kollidieren, z. B. für Ansichten am unteren Rand, Karussells oder in Spielen. - Verwende
WindowInsets.safeContentals Kombination ausWindowInsets.safeDrawingundWindowInsets.safeGestures, um sicherzustellen, dass sich Inhalte nicht visuell und nicht bei Gesten überschneiden.
Empfehlungen für Sie
- Hinweis: Der Linktext wird angezeigt, wenn JavaScript deaktiviert ist.
- Materialkomponenten und Layouts
CoordinatorLayoutzu Compose migrieren- Weitere Überlegungen