Ręczne konfigurowanie wyświetlacza od krawędzi do krawędzi

Aby włączyć wyświetlanie od krawędzi do krawędzi w aplikacji, wywołaj metodę enableEdgeToEdge. To powinno wystarczać w większości aplikacji. Z tego przewodnika dowiesz się, jak włączyć tryb edge-to-edge, jeśli Twoja aplikacja musi to zrobić bez użycia enableEdgeToEdge.

Układ aplikacji na pełnym ekranie

Użyj elementu WindowCompat.setDecorFitsSystemWindows(window, false), aby umieścić aplikację za paskami systemu, jak pokazano w tym przykładzie kodu:

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)
  WindowCompat.setDecorFitsSystemWindows(window, false)
}

Java

@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  WindowCompat.setDecorFitsSystemWindows(getWindow(), false);
}

Zmienianie koloru pasków systemowych

W przypadku układu od krawędzi do krawędzi aplikacja musi zmienić kolory pasków systemowych, by zawartość pod nim była widoczna. Gdy aplikacja wykona ten krok, system będzie obsługiwać wszystkie zabezpieczenia wizualne interfejsu użytkownika w trybie nawigacji za pomocą gestów i w trybie przycisków.

  • Tryb nawigacji za pomocą gestów: system stosuje dynamiczną adaptację kolorów, w której zawartość pasków systemu zmienia kolor w zależności od zawartości znajdującej się za nimi. W tym przykładzie uchwyt na pasku nawigacyjnym zmienia kolor na ciemny, gdy znajduje się nad jasnymi treściami, i na jasny, gdy znajduje się nad ciemnymi treściami.
Rysunek 1. Zmiany kolorów w trybie nawigacji za pomocą gestów.
  • Tryb przycisków: system stosuje przezroczystą przesłonę za paskami systemowymi (w przypadku interfejsu API na poziomie 29 lub nowszym) albo przezroczysty pasek systemowy (w przypadku interfejsu API na poziomie 28 lub niższym).
Ilustracja przedstawiająca przezroczyste paski systemu
Rysunek 2. Prześwitująca siatka za paskami systemowymi.
  • Kolor treści na pasku stanu: określa kolor treści na pasku stanu, takich jak godzina czy ikony.
Obraz pokazujący kolor treści na pasku stanu
Rysunek 3. Kolor treści na pasku stanu.

W pliku themes.xml możesz ustawić kolor paska nawigacyjnego i opcjonalnie ustawić go jako przezroczysty, a kolor jego treści na ciemny.

<!-- values-v29/themes.xml -->
<style name="Theme.MyApp">
  <item name="android:navigationBarColor">
     @android:color/transparent
  </item>

  <!-- Optional: set to transparent if your app is drawing behind the status bar. -->
  <item name="android:statusBarColor">
     @android:color/transparent
  </item>

  <!-- Optional: set for a light status bar with dark content. -->
  <item name="android:windowLightStatusBar">
    true
  </item>
</style>

Możesz używać interfejsu API WindowInsetsController bezpośrednio, ale zdecydowanie zalecamy korzystanie z biblioteki obsługi WindowInsetsControllerCompat, jeśli to możliwe. Aby kontrolować kolor zawartości paska stanu, możesz użyć interfejsu API WindowInsetsControllerCompat zamiast interfejsu theme.xml. Aby to zrobić, użyj funkcji setAppearanceLightNavigationBars(), przekazując wartość true, aby zmienić kolor pierwszego planu nawigacji na jasny, lub false, aby przywrócić domyślny kolor.

Kotlin

val windowInsetsController =
      ViewCompat.getWindowInsetsController(window.decorView)

windowInsetsController?.isAppearanceLightNavigationBars = true

Java

WindowInsetsControllerCompat windowInsetsController =
      ViewCompat.getWindowInsetsController(getWindow().getDecorView());
if (windowInsetsController == null) {
    return;
}

windowInsetsController.setAppearanceLightNavigationBars(true);