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).
Android-Fähigkeiten
Auf GitHub ansehenUnterstützung für randlose Anzeige hinzufügen
android skills add edge-to-edge1. 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.