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

Wywołanie enableEdgeToEdge obejmuje logikę potrzebną do zapewnienia prawdziwej zgodności wstecznej, dlatego jest to zalecany sposób konfigurowania wyświetlacza bez ramek. Nowoczesny sposób tworzenia aplikacji bez ramek za pomocą enableEdgeToEdge znajdziesz w dokumentacji Compose i Widoków, a nie w tym przewodniku.

Jeśli aplikacja musi ręcznie skonfigurować wyświetlacz bez ramek, możesz wykonać te czynności (choć nie jest to zalecane):

  1. Wywołaj WindowCompat.setDecorFitsSystemWindows(window, false).
  2. Ustaw paski systemowe jako przezroczyste.
  3. Obsłuż odcięcia.

Wyświetlanie aplikacji na pełnym ekranie

Aby wyświetlić aplikację za paskami systemowymi, użyj WindowCompat.setDecorFitsSystemWindows(window, false) , 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 bez ramek w Androidzie 14 i starszych wersjach aplikacja musi też ustawić paski systemowe jako przezroczyste.

Możesz edytować plik themes.xml, aby ustawić kolor paska stanu i paska nawigacyjnego 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>

Aby kontrolować kolor treści paska stanu, możesz użyć interfejsu WindowInsetsControllerCompat zamiast theme.xml. Aby to zrobić, użyj funkcji setAppearanceLightNavigationBars() , przekazując 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 odcięć

Na koniec aplikacja musi obsługiwać odcięcia, aby najważniejsze elementy interfejsu nie były zasłaniane przez paski systemowe i wycięcie w ekranie. Informacje o tym, jak obsługiwać odcięcia, znajdziesz w dokumentacji Compose i Widoków.