Ручная настройка безрамочного дисплея

Вызов функции enableEdgeToEdge инкапсулирует логику, необходимую для обеспечения истинной обратной совместимости , и поэтому является рекомендуемым способом настройки отображения от края до края. Для получения информации о современном способе создания отображения от края до края с помощью enableEdgeToEdge обратитесь к документации Compose и Views , а не к этому руководству.

Хотя это и не рекомендуется, если вашему приложению необходимо вручную настроить отображение экрана от края до края, вы можете выполнить следующие шаги:

  1. Вызовите метод WindowCompat.setDecorFitsSystemWindows(window, false) .
  2. Установите прозрачность системных панелей.
  3. Обработка вставок.

Разместите приложение в полноэкранном режиме.

Используйте WindowCompat.setDecorFitsSystemWindows(window, false) чтобы разместить ваше приложение за системными панелями, как показано в следующем примере кода:

Котлин

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

Изменить цвет системных полос

При ручном создании макета от края до края для Android 14 и более ранних версий ваше приложение также должно сделать системные панели прозрачными.

Вы можете отредактировать файл themes.xml , чтобы установить прозрачный цвет для панели состояния и панели навигации, а также изменить цвет значка в панели состояния.

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

Для управления цветом содержимого строки состояния можно использовать API WindowInsetsControllerCompat вместо theme.xml . Для этого используйте функцию setAppearanceLightNavigationBars() , передав значение true , чтобы изменить цвет переднего плана навигации на светлый, или false чтобы вернуться к цвету по умолчанию.

Котлин

val windowInsetsController =
      ViewCompat.getWindowInsetsController(window.decorView)

windowInsetsController?.isAppearanceLightNavigationBars = true

Java

WindowInsetsControllerCompat windowInsetsController =
      ViewCompat.getWindowInsetsController(getWindow().getDecorView());
if (windowInsetsController == null) {
    return;
}

windowInsetsController.setAppearanceLightNavigationBars(true);

Вставки ручек

Наконец, ваше приложение должно обрабатывать отступы, чтобы критически важные элементы пользовательского интерфейса не заходили на системные панели и не обрамляли экран. Обратитесь к документации по Compose и Views , чтобы узнать, как обрабатывать отступы.