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

Вызов 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)
}

Ява

@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

Ява

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

windowInsetsController.setAppearanceLightNavigationBars(true);

Вставки для ручек

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