Randlose Anzeige einrichten

Mit der randlosen Anzeige kann Ihre App ihre Benutzeroberfläche hinter den Systemleisten (Statusleiste, Titelleiste und Navigationsleiste) zeichnen, um eine immersivere Nutzererfahrung zu erzielen. Wenn Sie auf Geräte mit Android 15 (API-Level 35) oder höher ausgerichtet sind, wird die randlose Anzeige standardmäßig erzwungen.

Folgen Sie dieser Anleitung, um Inhalte auf allen Android-Versionen korrekt randlos anzuzeigen. Andernfalls zeichnet Ihre App möglicherweise undurchsichtige Farben hinter den Systemleisten oder animiert ihre Inhalte nicht synchron mit den Übergängen der Bildschirmtastatur (IME).

1. Randlose Anzeige aktivieren

Wenn Sie die randlose Anzeige auf älteren Android-Versionen aktivieren möchten, rufen Sie enableEdgeToEdge() in der Methode Activity.onCreate() auf:

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

Standardmäßig macht enableEdgeToEdge() die Systemleisten transparent. Im 3-Tasten-Navigationsmodus wird jedoch ein durchscheinender Schleier auf die Navigationsleiste angewendet, um den Kontrast zu verbessern. Die Farbe der Systemsymbole und des Schleiers 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-Einzüge empfangen. So können Sie das 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 Einzügen verarbeiten

Sobald die randlose Anzeige aktiviert ist, werden einige Inhalte und UI-Elemente Ihrer App möglicherweise hinter den Systemleisten gezeichnet. Damit kritische oder interaktive Elemente nicht von Systemleisten verdeckt werden oder sich mit Systemgesten überlappen, müssen Sie Einzüge verarbeiten.

Einzüge beschreiben Bereiche des Bildschirms, die sich mit der System-UI oder Systemgesten überschneiden. Die wichtigsten Arten von Einzügen für die randlose Anzeige sind:

  • Systemleisteneinzüge:Stellen Bereiche dar, in denen Systemleisten angezeigt werden. Verwenden Sie diese, um zu verhindern, dass die UI von Systemleisten verdeckt wird.
  • Einzüge für Displayausschnitte:Stellen Bereiche dar, in denen sich auf dem Gerätebildschirm ein physischer Ausschnitt (z. B. eine Kameranische) befindet.

In Compose können Sie Einzüge mit Linealen, Padding-Modifikatoren oder Modifikatoren für die Einzugsgröße verarbeiten. Eine detaillierte Anleitung finden Sie unter Informationen zu Fenstereinzügen.

Themen für Fortgeschrittene

Beachten Sie Folgendes für komplexere Anwendungsfälle der randlosen Anzeige.

Immersiver Modus

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

Farben und Symbole der Systemleisten

Wenn Sie die randlose Anzeige verwenden, ist der Hintergrund Ihrer App möglicherweise hinter den Systemleisten sichtbar. Daher müssen Sie möglicherweise die Farben der Systemleistensymbole anpassen, um den Kontrast zu verbessern.

Verwenden Sie WindowInsetsControllerCompat, um die Statusleistensymbole in hell oder dunkel zu ändern:

// 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

Systemleistenschutz

enableEdgeToEdge() bietet standardmäßig transparente oder durchscheinende Systemleisten. Möglicherweise müssen Sie dies jedoch anpassen. In den Designrichtlinien für Android-Systemleisten und den Designrichtlinien für die randlose Anzeige finden Sie Informationen dazu, wann transparente und wann durchscheinende Leisten verwendet werden sollten.

Wenn Sie die Bedienung über 3 Buttons vollständig transparent statt durchscheinend machen möchten, können Sie die Kontrasterzwingung deaktivieren:

window.isNavigationBarContrastEnforced = false

Weitere Informationen finden Sie unter Informationen zum Systemleistenschutz.