Отображение от края до края позволяет приложению отрисовывать интерфейс за системными строками (строкой состояния, строкой заголовка и панелью навигации), чтобы сделать его более иммерсивным. Если вы разрабатываете приложение для устройств с Android 15 (уровень API 35) или более поздней версии, режим от края до края будет включен по умолчанию.
Чтобы правильно отображать контент от края до края во всех версиях Android, выполните следующие действия: шаги настройки. Без этих шагов приложение может отрисовывать сплошные цвета за системными строками или не синхронизировать анимацию контента с переходами экранной клавиатуры (IME).
Навыки работы с Android
Посмотреть на GitHubДобавьте поддержку режима "От края до края"
android skills add edge-to-edge1. Включить отображение от края до края
Чтобы включить режим без полей в предыдущих версиях Android, вызовите enableEdgeToEdge() в методе Activity.onCreate():
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() // ... }
По умолчанию enableEdgeToEdge() делает системные строки прозрачными, за исключением режима навигации с помощью трех кнопок, в котором к панели навигации применяется полупрозрачный экран для лучшей контрастности. Цвет системных значков и полупрозрачного слоя адаптируется к светлой или тёмной теме системы.
2. Настройте windowSoftInputMode
Установите android:windowSoftInputMode="adjustResize" в записи AndroidManifest.xml вашего действия. Этот параметр позволяет приложению получать вставки IME, чтобы вы могли настраивать макет с помощью отступов при появлении или исчезновении экранной клавиатуры.
<!-- In your AndroidManifest.xml file: -->
<activity
android:name=".ui.MainActivity"
android:label="@string/app_name"
android:windowSoftInputMode="adjustResize"
android:theme="@style/Theme.MyApplication"
android:exported="true">
...
</activity>
3. Обработка перекрытий с помощью вставок
После включения режима "От края до края" некоторые элементы контента и интерфейса приложения могут отображаться за системными строками. Чтобы системные строки не закрывали важные или интерактивные элементы, а системные жесты не пересекались с ними, необходимо настроить отступы.
Отступы описывают части экрана, которые пересекаются с системным интерфейсом или системными жестами. Основные типы вставок, которые следует учитывать при отображении от края до края:
- Отступы системных строк. Представляют области, в которых отображаются системные строки. Используйте их, чтобы системные строки не перекрывали интерфейс.
- Отступы выреза на экране. Представляют области, где на экране устройства есть физический вырез (например, для камеры).
В Compose вы можете обрабатывать вставки, используя линейки, модификаторы заполнения или модификаторы размера вставки. Подробные инструкции вы найдете в статье О вставках окон.
Дополнительные темы
Ниже приведены рекомендации для более сложных случаев.
Режим комфортного просмотра
Для некоторых типов контента, например видео или карт, лучше подходит полноэкранный режим, в котором системные строки скрыты. Чтобы скрыть системные строки, используйте WindowInsetsControllerCompat:
val windowInsetsController = WindowCompat.getInsetsController(window, window.decorView) // Hide the system bars. windowInsetsController.hide(WindowInsetsCompat.Type.systemBars()) // Show the system bars. windowInsetsController.show(WindowInsetsCompat.Type.systemBars())
Цвета и значки системной строки
При показе от края до края фон приложения может быть виден за системными строками, поэтому вам может потребоваться настроить цвета значков системных строк для лучшего контраста.
Чтобы изменить цвет значков в строке состояния на светлый или темный, используйте WindowInsetsControllerCompat:
// Set status bar icons to dark. WindowCompat.getInsetsController(window, window.decorView) .isAppearanceLightStatusBars = true // Set status bar icons to light. WindowCompat.getInsetsController(window, window.decorView) .isAppearanceLightStatusBars = false
Защита системной строки
Хотя enableEdgeToEdge() предоставляет прозрачные или полупрозрачные системные строки по умолчанию, вам может потребоваться настроить их. Чтобы решить, когда использовать прозрачные, а когда полупрозрачные панели, ознакомьтесь с руководством по дизайну системных панелей Android и руководством по дизайну без полей.
Чтобы сделать панель навигации с тремя кнопками полностью прозрачной, а не полупрозрачной, отключите принудительную контрастность:
window.isNavigationBarContrastEnforced = false
Подробнее о защите системной строки…