Randlose Anzeige einrichten

Bei einem Edge-to-Edge-Display kann die Benutzeroberfläche Ihrer App hinter den Systemleisten (Statusleiste, Untertitel- und Navigationsleiste) gerendert werden, um eine noch immersivere Nutzererfahrung zu ermöglichen. Wenn Sie auf Geräte mit Android 15 (API‑Level 35) oder höher ausgerichtet sind, wird die randlose Darstellung standardmäßig erzwungen.

Damit Inhalte auf allen Android-Versionen korrekt von Rand zu Rand angezeigt werden, müssen Sie die folgenden Einrichtungsschritte ausführen. Andernfalls werden in Ihrer App möglicherweise Volltonfarben hinter den Systemleisten angezeigt oder die Inhalte werden nicht synchron mit den Übergängen der Bildschirmtastatur (IME) animiert.

1. Randlose Anzeige aktivieren

Wenn Sie den Edge-to-Edge-Modus in früheren Android-Versionen aktivieren möchten, rufen Sie enableEdgeToEdge() in Ihrer Activity.onCreate()-Methode auf:

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

Standardmäßig macht enableEdgeToEdge() die Systemleisten transparent, außer im 3-Tasten-Navigationsmodus. Dort wird der Navigationsleiste ein durchscheinender Scrim hinzugefügt, um den Kontrast zu verbessern. Die Farbe der Systemsymbole und des Scrims passt sich an das helle oder dunkle Design des Systems an.

2. windowSoftInputMode konfigurieren

Legen Sie android:windowSoftInputMode="adjustResize" im AndroidManifest.xml-Eintrag Ihrer Aktivität fest. Mit dieser Einstellung kann Ihre App IME-Insets empfangen. So können Sie Ihr Layout mit Padding anpassen, wenn die Bildschirmtastatur ein- oder ausgeblendet wird.

<!-- In your AndroidManifest.xml file: -->
<activity
  android:name=".ui.MainActivity"
  android:label="@string/app_name"
  android:windowSoftInputMode="adjustResize"
  android:theme="@style/Theme.MyApplication"
  android:exported="true">
  ...
</activity>

3. Überlappungen mit Insets beheben

Wenn die Darstellung auf dem gesamten Display aktiviert ist, werden einige Inhalte und UI-Elemente Ihrer App möglicherweise hinter den Systemleisten gerendert. Damit kritische oder interaktive Elemente nicht von Systemleisten verdeckt werden oder sich mit Systemgesten überschneiden, müssen Sie Insets verarbeiten.

Insets beschreiben Teile des Bildschirms, die sich mit der System-UI oder Systemgesten überschneiden. Die wichtigsten Arten von Insets, die für die Edge-to-Edge-Anzeige infrage kommen, sind:

  • Systemleisten-Insets:Stellen Bereiche dar, in denen Systemleisten angezeigt werden. Verwenden Sie diese, um zu vermeiden, dass die Benutzeroberfläche durch Systemleisten verdeckt wird.
  • Display-Aussparung: Stellt Bereiche dar, in denen sich auf dem Gerätebildschirm eine physische Aussparung (z. B. eine Kameraaussparung) befindet.

In Compose können Sie Insets mit Linealen, Padding-Modifikatoren oder Inset-Größenmodifikatoren verarbeiten. Weitere Informationen zu Fenstereinsätzen

Weiterführende Informationen

Beachten Sie Folgendes für anspruchsvollere Edge-to-Edge-Anwendungsfälle.

Immersiver Modus

Bei einigen Inhalten wie Videos oder Karten ist es von Vorteil, wenn die Systemleisten ausgeblendet werden, um eine vollständig immersive Darstellung zu ermöglichen. Sie können Systemleisten mit WindowInsetsControllerCompat ausblenden:

val windowInsetsController =
    WindowCompat.getInsetsController(window, window.decorView)

// Hide the system bars.
windowInsetsController.hide(WindowInsetsCompat.Type.systemBars())

// Show the system bars.
windowInsetsController.show(WindowInsetsCompat.Type.systemBars()) For example, use either `Scaffold`,

Farben und Symbole der Systemleiste

Wenn Ihre App über den gesamten Bildschirm angezeigt wird, ist der Hintergrund Ihrer App möglicherweise hinter den Systemleisten sichtbar. Sie müssen die Symbolfarben der Systemleisten möglicherweise anpassen, um einen besseren Kontrast zu erzielen.

So ändern Sie die Symbole in der Statusleiste in hell oder dunkel:WindowInsetsControllerCompat

// Set status bar icons to dark
WindowCompat.getInsetsController(window, window.decorView)
    .isAppearanceLightStatusBars = true

// Set status bar icons to light
WindowCompat.getInsetsController(window, window.decorView)
    .isAppearanceLightStatusBars = false

Schutz der Systemleiste

enableEdgeToEdge() bietet zwar standardmäßig transparente oder durchscheinende Systemleisten, aber möglicherweise müssen Sie diese anpassen. In den Designrichtlinien für Android-Systemleisten und den Designrichtlinien für Edge-to-Edge finden Sie Informationen dazu, wann transparente und wann halbtransparente Leisten verwendet werden sollten.

Wenn Sie die Navigationsleiste mit drei Schaltflächen vollständig transparent statt durchscheinend machen möchten, können Sie die Kontrasterzwingung deaktivieren:

window.isNavigationBarContrastEnforced = false

Weitere Informationen finden Sie unter Schutz der Systemleiste.

Dialogfelder

Wenn Sie Vollbild-Dialogfelder von Rand zu Rand anzeigen möchten, rufen Sie WindowCompat.enableEdgeToEdge in der onStart()-Methode des Dialogfelds auf:

class MyAlertDialogFragment : DialogFragment() {
    override fun onStart(){
        super.onStart()
        dialog?.window?.let { WindowCompat.enableEdgeToEdge(it) }
    }
    ...
}