Einzüge in Ansichten und im Tool „Compose“ verwenden

Wenn Ihre App sowohl Compose- als auch View-Code enthält, müssen Sie möglicherweise explizit angeben, welche System-Insets jeweils verwendet werden sollen, und dafür sorgen, dass Insets an gleichgeordnete Ansichten weitergeleitet werden.

Standard-Insets überschreiben

Möglicherweise müssen Sie die Standard-Insets überschreiben, wenn Ihr Bildschirm sowohl Ansichten als auch Compose-Code in derselben Hierarchie enthält. In diesem Fall müssen Sie explizit angeben, welches Element die Insets verwenden und welches sie ignorieren soll.

Wenn Ihr äußerstes Layout beispielsweise ein Android-Ansichtslayout ist, sollten Sie die Insets im Ansichtssystem nutzen und für Compose ignorieren. Wenn Ihr äußerstes Layout ein Composable ist, sollten Sie die Insets in Compose verwenden und die AndroidView-Composables entsprechend mit Padding versehen.

Standardmäßig verbraucht jedes ComposeView alle Insets auf der Verbrauchsebene WindowInsetsCompat. Wenn Sie dieses Standardverhalten ändern möchten, setzen Sie AbstractComposeView.consumeWindowInsets auf false.

Abwärtskompatible Inset-Verteilung für Ansichten

Wenn Ihre App Views-Code enthält, müssen Sie möglicherweise prüfen, ob Insets auf Geräten mit Android 10 (API-Level 29) oder niedriger an gleichgeordnete Ansichten gesendet werden. Weitere Informationen finden Sie im Leitfaden zu randlosen Ansichten.

Symbole in der Systemleiste

Durch den Aufruf von enableEdgeToEdge wird sichergestellt, dass die Farben der Symbole in der Systemleiste aktualisiert werden, wenn sich das Design des Geräts ändert.

Wenn du das Edge-to-Edge-Layout verwendest, musst du möglicherweise die Farben der Symbole in der Systemleiste manuell aktualisieren, damit sie sich vom Hintergrund deiner App abheben. So erstellen Sie beispielsweise helle Symbole für die Statusleiste:

Kotlin

WindowCompat.getInsetsController(window, window.decorView)
    .isAppearanceLightStatusBars = false

Java

WindowCompat.getInsetsController(window, window.getDecorView())
    .setAppearanceLightStatusBars(false);