Randlose Anzeige einrichten

Mit der Edge-to-Edge-Anzeige kann Ihre App ihre Benutzeroberfläche hinter den Systemleisten (Statusleiste, Titelleiste und Navigationsleiste) anzeigen, um eine immersivere Nutzererfahrung zu bieten. Wenn Sie Geräte mit Android 15 (API-Level 35) oder höher als Zielgeräte verwenden, wird standardmäßig die randlose Anzeige erzwungen.

Damit Inhalte auf allen Android-Versionen im Vollbildmodus korrekt angezeigt werden, führen Sie die folgenden Einrichtungsschritte aus. Ohne diese Schritte zeichnet Ihre App möglicherweise Volltonfarben hinter den Systemleisten oder animiert ihre Inhalte nicht synchron mit den Übergängen der Bildschirmtastatur (IME).

1. Randlose Anzeige aktivieren

Wenn Sie die randlose Darstellung 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-Button-Navigationsmodus. In diesem Modus wird ein halbtransparentes Scrim auf die Navigationsleiste angewendet, um den Kontrast zu verbessern. Die Farbe der Systemsymbole und des Scrims passt sich dem hellen oder dunklen Design des Systems an.

2. windowSoftInputMode konfigurieren

Legen Sie android:windowSoftInputMode="adjustResize" im Eintrag AndroidManifest.xml Ihrer Aktivität fest. Mit dieser Einstellung kann Ihre App IME-Insets empfangen, sodass Sie das Layout mit Padding anpassen können, 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. Überschneidungen mit Insets verarbeiten

Wenn die Edge-to-Edge-Anzeige aktiviert ist, werden einige Inhalte und UI-Elemente Ihrer App möglicherweise hinter den Systemleisten angezeigt. Damit wichtige oder interaktive Elemente nicht von Systemleisten verdeckt werden oder sich mit System-Gesten überschneiden, müssen Sie Insets verarbeiten.

Insets beschreiben Teile des Bildschirms, die sich mit der System-UI oder System-Gesten überschneiden. Die wichtigsten Arten von Insets, die für die randlose Anzeige berücksichtigt werden müssen, sind:

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

In Compose können Sie Insets entweder mit Linealen, Padding-Modifikatoren oder Modifikatoren für die Inset-Größe verarbeiten. Eine ausführliche Anleitung finden Sie unter Fenster-Insets.

Themen für Fortgeschrittene

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

Immersiver Modus

Bei einigen Inhalten wie Videos oder Karten ist eine vollständig immersive Darstellung von Vorteil, bei der die Systemleisten ausgeblendet sind. Du kannst 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())

Farben und Symbole der Systemleiste

Wenn du das Edge-to-Edge-Layout verwendest, ist der Hintergrund deiner App möglicherweise hinter den Systemleisten sichtbar. Daher musst du eventuell die Farben der Symbole in den Systemleisten anpassen, um einen besseren Kontrast zu erzielen.

Wenn du die Symbole in der Statusleiste in hell oder dunkel ändern möchtest, verwende 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 musst du diese anpassen. In den Designrichtlinien für Android-Systemleisten und den Designrichtlinien für randlose Displays finden Sie Informationen dazu, wann Sie transparente und wann Sie durchscheinende Leisten verwenden sollten.

Wenn du die Navigationsleiste mit 3 Schaltflächen vollständig transparent statt durchscheinend machen möchtest, kannst du die Kontrasterzwingung deaktivieren:

window.isNavigationBarContrastEnforced = false

Weitere Informationen finden Sie unter Informationen zum Schutz der Systemleiste.