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.

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, 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ć 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);

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 na wyświetlaczu. Informacje o tym, jak obsługiwać wstawki, znajdziesz w dokumentacji KomponowanieWidoki.