Schutz der Systemleiste

Sobald Ihre App auf SDK 35 oder höher ausgerichtet ist, wird die Edge-to-Edge-Funktion erzwungen. Die Systemstatusleiste und die Navigationsleisten für die Bedienung über Gesten sind transparent, die Navigationsleiste mit drei Schaltflächen ist jedoch durchscheinend. Rufen Sie enableEdgeToEdge auf, um die Abwärtskompatibilität zu gewährleisten.

Die Systemstandardeinstellungen funktionieren jedoch möglicherweise nicht für alle Anwendungsfälle. In der Anleitung zumDesign von Android-Systemleisten und derAnleitung zum Edge-to-Edge-Design finden Sie eine Übersicht darüber, wann transparente oder durchscheinende Systemleisten infrage kommen.

Transparente Systemleisten erstellen

Wenn Sie Android 15 oder höher verwenden oder enableEdgeToEdge() mit Standardargumenten für frühere Versionen aufrufen, wird eine transparente Navigationsleiste für die Bedienung über Gesten erstellt. Legen Sie für die Navigationsleiste mit drei Schaltflächen Window.setNavigationBarContrastEnforced auf false fest, da sonst ein durchscheinender Schleier angewendet wird.

Durchscheinende Systemleisten erstellen

Wenn Sie eine durchscheinende Statusleiste erstellen möchten, erstellen Sie eine benutzerdefinierte zusammensetzbare Funktion, die den Hauptinhalt überlappt und einen Farbverlauf im Bereich der Einsätze zeichnet.

class SystemBarProtectionSnippets : ComponentActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        // enableEdgeToEdge sets window.isNavigationBarContrastEnforced = true
        // which is used to add a translucent scrim to three-button navigation
        enableEdgeToEdge()

        setContent {
            MyTheme {
                // Main content
                MyContent()

                // After drawing main content, draw status bar protection
                StatusBarProtection()
            }
        }
    }
}

@Composable
private fun StatusBarProtection(
    color: Color = MaterialTheme.colorScheme.surfaceContainer,
) {
    Spacer(
        modifier = Modifier
            .fillMaxWidth()
            .height(
                with(LocalDensity.current) {
                    (WindowInsets.statusBars.getTop(this) * 1.2f).toDp()
                }
            )
            .background(
                brush = Brush.verticalGradient(
                    colors = listOf(
                        color.copy(alpha = 1f),
                        color.copy(alpha = 0.8f),
                        Color.Transparent
                    )
                )
            )
    )
}

Abbildung 1 Eine durchscheinende Statusleiste.

Fügen Sie für adaptive Apps eine benutzerdefinierte zusammensetzbare Funktion ein, die den Farben der einzelnen Bereiche entspricht, wie im Edge-to-Edge-Design zu sehen. Wenn Sie eine durchscheinende Navigationsleiste erstellen möchten, legen Sie Window.setNavigationBarContrastEnforced auf „true“ fest.