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

Aby włączyć wyświetlanie bez ramki w aplikacji, wywołaj funkcję enableEdgeToEdge. To powinno wystarczać w większości aplikacji. Z tego przewodnika dowiesz się, jak włączyć tryb edge-to-edge, jeśli 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);
}

Zmiana koloru pasków systemowych

Podczas korzystania z układu pełnoekranowego aplikacja musi zmieniać kolory pasków systemu, aby umożliwić wyświetlanie zawartości znajdującej się pod nimi. Po aplikacji gdy wykonuje ten krok, system zajmuje się w całości wizualną ochroną użytkownika w trybie nawigacji przy użyciu gestów i w trybie przycisku.

  • Tryb nawigacji przy użyciu gestów: system stosuje dynamiczne dostosowywanie kolorów w Zawartość pasków systemowych zmienia kolor w zależności od . 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 nawigacji przy użyciu gestów i trybu uzyskiwania zgody.
  • 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).
Obraz przedstawiający półprzezroczyste paski systemowe
Rysunek 2. Przezroczysta siatka za pasami systemowymi.
  • Kolor zawartości paska stanu: steruje kolorem zawartości paska stanu, np. jak czas i ikony.
.
Obraz pokazujący kolor treści na pasku stanu
Rysunek 3. Kolor treści na pasku stanu.

Możesz edytować plik themes.xml, aby ustawić kolor paska nawigacyjnego. Opcjonalnie ustaw pasek stanu jako Przezroczysty, a kolor zawartości paska stanu ciemność.

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

Za pomocą Interfejs API WindowInsetsController bezpośrednio, ale zdecydowanie zalecamy skorzystanie z Biblioteki pomocy WindowInsetsControllerCompat gdy tylko jest to możliwe. Możesz użyć interfejsu API WindowInsetsControllerCompat zamiast theme.xml, aby określić kolor zawartości paska stanu. W tym celu użyj setAppearanceLightNavigationBars() i przekazując wartość true, aby zmienić kolor pierwszego planu nawigacji na kolor jasny lub false, by przywrócić kolor domyślny.

Kotlin

val windowInsetsController =
      ViewCompat.getWindowInsetsController(window.decorView)

windowInsetsController?.isAppearanceLightNavigationBars = true

Java

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

windowInsetsController.setAppearanceLightNavigationBars(true);