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

Aby włączyć wyświetlacz od krawędzi do krawędzi w aplikacji, wywołaj wywołanie enableEdgeToEdge To powinno wystarczyć w przypadku większości aplikacji. W tym przewodniku opisujemy, jak włączyć od brzegu do brzegu, jeśli aplikacja wymaga tego bez korzystania z enableEdgeToEdge.

Wyświetlanie aplikacji na pełnym ekranie

Użyj formatu WindowCompat.setDecorFitsSystemWindows(window, false) aby umieścić aplikację za paskami systemowymi, jak widać w kodzie poniżej. przykład:

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);
}

Zmień kolor pasków systemowych

W przypadku układu od krawędzi do krawędzi aplikacja musi zmienić kolory paski systemu, aby treść pod nim była widoczna. Po aplikacji gdy wykonuje się 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 poniższym przykładzie nick na pasku nawigacyjnym zmienia się na ciemny kolor, gdy znajduje się nad jasnymi treściami, a jeśli jest powyżej, na jasny treści ciemne.
.
Rysunek 1. Zmiany kolorów w nawigacji przy użyciu gestów i trybu uzyskiwania zgody.
  • Tryb przycisku: system stosuje półprzezroczysty obraz scrim za paskami systemowymi (dla interfejsu API na poziomie 29 lub nowszym) lub przez przezroczysty system pasek (w przypadku interfejsu API poziomu 28 lub starszego).
.
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 zawartości paska stanu
. Rysunek 3. Kolor treści paska 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);