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ą ComposeWidoki, aby poznać nowoczesny sposób na wyświetlanie treści od krawędzi do krawędzi za pomocą enableEdgeToEdge.

Jeśli aplikacja musi ręcznie skonfigurować wyświetlacz od krawędzi do krawędzi (nie jest to zalecane), wykonaj 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 theme.xml możesz użyć interfejsu WindowInsetsControllerCompat 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ć odcięcia, aby kluczowe elementy interfejsu nie były zasłaniane przez paski systemu i wycięcie w ekranie. Informacje o tym, jak obsługiwać wstawki, znajdziesz w dokumentacji ComposeWidoki.