Вы можете включить отображение от края до края в своем приложении, вызвав 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); }
Изменение цвета системных полос
При работе в макете от края до края вашему приложению необходимо изменить цвета системных панелей, чтобы содержимое под ними было видно. После того, как ваше приложение выполнит этот шаг, система обеспечивает всю визуальную защиту пользовательского интерфейса в режиме навигации жестами и в режиме кнопок.
- Режим навигации с помощью жестов: система применяет динамическую адаптацию цвета, при которой содержимое системных панелей меняет цвет в зависимости от содержимого за ними. В следующем примере маркер на панели навигации меняется на темный цвет, когда он находится над светлым содержимым, и на светлый цвет, когда он находится над темным содержимым.
- Режим кнопки: система применяет полупрозрачную сетку за системными панелями (для уровня API 29 или более поздней версии) или прозрачную системную панель (для уровня API 28 или более ранней версии).
- Цвет содержимого строки состояния: управляет цветом содержимого строки состояния, например времени и значков.
Вы можете отредактировать файл 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);