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

Wywołanie funkcji enableEdgeToEdge obejmuje logikę niezbędną do zapewnienia zgodności wstecznej, dlatego jest zalecanym sposobem konfigurowania wyświetlacza od krawędzi do krawędzi. Zamiast tego przewodnika zapoznaj się z dokumentacją ComposeWidoków, aby poznać nowoczesny sposób na wyświetlanie treści od krawędzi do krawędzi za pomocą enableEdgeToEdge.

Chociaż nie jest to zalecane, jeśli aplikacja musi ręcznie skonfigurować wyświetlacz od krawędzi do krawędzi, możesz wykonać te czynności:

  1. Zadzwoń: WindowCompat.setDecorFitsSystemWindows(window, false)
  2. Ustaw paski systemowe jako przezroczyste.
  3. Obsługa wcięć.

Wyświetlanie aplikacji na pełnym ekranie

Użyj 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 ręcznego tworzenia układu od krawędzi do krawędzi na Androidzie 14 i starszych wersjach aplikacja musi również sprawić, że paski systemowe będą przezroczyste.

Możesz edytować plik themes.xml, aby ustawić kolor paska stanu i nawigacji jako przezroczysty oraz zmienić kolor ikony paska stanu.

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

Zamiast interfejsu WindowInsetsControllerCompat możesz użyć interfejsu theme.xml API, aby kontrolować kolor treści na pasku stanu. Aby to zrobić, użyj funkcji setAppearanceLightNavigationBars() i przekaż 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);

Obsługa wcięć

Aplikacja musi też obsługiwać wcięcia, aby ważne elementy interfejsu użytkownika nie były zasłaniane przez paski systemowe i wycięcie na ekranie. Informacje o tym, jak obsługiwać wstawki, znajdziesz w dokumentacji ComposeViews.