Wyświetlanie bez ramki umożliwia aplikacji rysowanie interfejsu użytkownika za paskami systemu – paskiem stanu, paskiem tytułu i paskiem nawigacji – aby zapewnić użytkownikom lepsze wrażenia. Jeśli kierujesz aplikację na urządzenia z Androidem 15 (API na poziomie 35) lub nowszym, wyświetlanie bez ramki jest wymuszane domyślnie.
Aby prawidłowo wyświetlać treści bez ramki we wszystkich wersjach Androida, wykonaj te czynności konfiguracyjne. Bez tych czynności aplikacja może rysować jednolite kolory za paskami systemu lub nie animować treści synchronicznie z przejściami klawiatury ekranowej (IME).
Umiejętności związane z Androidem
Wyświetl na GitHubieDodawanie obsługi wyświetlania bez ramki
android skills add edge-to-edge1. Włącz wyświetlanie bez ramki
Aby włączyć wyświetlanie bez ramki w poprzednich wersjach Androida, wywołaj
enableEdgeToEdge() w metodzie Activity.onCreate():
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() // ... }
Domyślnie enableEdgeToEdge() sprawia, że paski systemu są przezroczyste, z wyjątkiem trybu nawigacji przy użyciu 3 przycisków, w którym stosuje półprzezroczystą zasłonę na pasku nawigacji, aby uzyskać lepszy kontrast. Kolor ikon systemowych i zasłony dostosowuje się do jasnego lub ciemnego motywu systemu.
2. Skonfiguruj windowSoftInputMode
Ustaw android:windowSoftInputMode="adjustResize" w wpisie
AndroidManifest.xml aktywności. To ustawienie umożliwia aplikacji otrzymywanie odcięć IME, co pozwala dostosować układ za pomocą dopełnienia, gdy klawiatura ekranowa się pojawia lub znika.
<!-- 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. Obsługuj nakładanie się elementów za pomocą odcięć
Gdy wyświetlanie bez ramki jest włączone, niektóre treści i elementy interfejsu aplikacji mogą być rysowane za paskami systemu. Aby zapobiec zasłanianiu ważnych lub interaktywnych elementów przez paski systemu lub nakładaniu się na gesty systemowe, musisz obsługiwać odcięcia.
Odcięcia opisują części ekranu, które przecinają się z interfejsem systemu lub gestami systemowymi. Główne typy odcięć, które należy wziąć pod uwagę w przypadku wyświetlania bez ramki, to:
- Odcięcia pasków systemu: reprezentują obszary, w których wyświetlane są paski systemu. Użyj ich, aby uniknąć zasłaniania interfejsu przez paski systemu.
- Odcięcia wycięcia w ekranie: reprezentują obszary, w których na ekranie urządzenia znajduje się fizyczne wycięcie (np. wycięcie na aparat).
W Compose możesz obsługiwać odcięcia za pomocą linijek, modyfikatorów dopełnienia lub modyfikatorów rozmiaru odcięcia. Szczegółowe wskazówki znajdziesz w artykule Odcięcia okna.
Tematy zaawansowane
W przypadku bardziej zaawansowanych zastosowań wyświetlania bez ramki weź pod uwagę te kwestie.
Tryb pojemny
Niektóre treści, takie jak filmy czy mapy, lepiej wyglądają w trybie pojemnym, w którym paski systemu są ukryte. Paski systemu możesz ukryć za pomocą WindowInsetsControllerCompat:
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())
Kolory i ikony pasków systemu
Gdy przejdziesz na wyświetlanie bez ramki, tło aplikacji może być widoczne za paskami systemu, dlatego może być konieczne dostosowanie kolorów ikon pasków systemu, aby uzyskać lepszy kontrast.
Aby zmienić ikony paska stanu na jasne lub ciemne, użyj 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
Ochrona paska systemu
Chociaż enableEdgeToEdge() zapewnia domyślne przezroczyste lub półprzezroczyste paski systemu, może być konieczne dostosowanie tego ustawienia. Aby zdecydować, kiedy używać pasków przezroczystych, a kiedy półprzezroczystych, zapoznaj się z wytycznymi dotyczącymi projektowania pasków systemu w Androidzie i wytycznymi dotyczącymi projektowania bez ramki.
Aby pasek nawigacji z 3 przyciskami był całkowicie przezroczysty zamiast półprzezroczysty, możesz wyłączyć wymuszanie kontrastu:
window.isNavigationBarContrastEnforced = false
Więcej informacji znajdziesz w artykule Ochrona paska systemu.