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

Вы можете включить отображение от края до края в своем приложении, вызвав enableEdgeToEdge . Этого должно быть достаточно для большинства приложений. В этом руководстве описывается, как включить сквозную связь, если вашему приложению необходимо сделать это без использования enableEdgeToEdge .

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

Используйте 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);
}

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

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

  • Режим навигации с помощью жестов: система применяет динамическую адаптацию цвета, при которой содержимое системных панелей меняет цвет в зависимости от содержимого за ними. В следующем примере маркер на панели навигации меняется на темный цвет, когда он находится над светлым содержимым, и на светлый цвет, когда он находится над темным содержимым.
Рисунок 1. Изменение цвета в режиме навигации жестами.
  • Режим кнопки: система применяет полупрозрачную сетку за системными панелями (для уровня API 29 или более поздней версии) или прозрачную системную панель (для уровня API 28 или более ранней версии).
Изображение, показывающее полупрозрачные системные панели.
Рисунок 2. Полупрозрачная сетка за системными решетками.
  • Цвет содержимого строки состояния: управляет цветом содержимого строки состояния, например времени и значков.
Изображение, показывающее цвет содержимого строки состояния.
Рисунок 3. Цвет содержимого строки состояния.

Вы можете отредактировать файл 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 WindowInsetsController напрямую, но мы настоятельно рекомендуем, где это возможно, использовать библиотеку поддержки WindowInsetsControllerCompat . Вы можете использовать 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);