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

На устройствах с Android 14 (уровень API 34) и ниже пользовательский интерфейс вашего приложения по умолчанию не отображается под системными панелями и не отображает вырезы.
На Android 15 (уровень API 35) и выше ваше приложение отрисовывается под системными панелями и отображает вырезы, как только ваше приложение переходит на SDK 35. Это обеспечивает более плавный пользовательский опыт и позволяет вашему приложению в полной мере использовать доступное ему пространство окна.
Отображение контента за системным пользовательским интерфейсом называется переходом от края к краю . На этой странице вы узнаете о различных типах вставок, о том, как перейти от края к краю и как использовать API вставок для анимации вашего пользовательского интерфейса и обеспечения того, чтобы содержимое вашего приложения не было закрыто элементами системного пользовательского интерфейса.
Вставка основ
Когда приложение становится граничным, вам нужно убедиться, что важный контент и взаимодействия не будут скрыты системным пользовательским интерфейсом. Например, если кнопка находится за панелью навигации, пользователь может не иметь возможности нажать на нее.
Размер пользовательского интерфейса системы и информация о его размещении указываются с помощью вставок .
Каждая часть пользовательского интерфейса системы имеет соответствующий тип вставки, который описывает ее размер и место ее размещения. Например, вставки строки состояния предоставляют размер и положение строки состояния, тогда как вставки панели навигации предоставляют размер и положение панели навигации. Каждый тип вставки состоит из четырех пиксельных размеров: сверху, слева, справа и снизу. Эти размеры указывают, насколько далеко системный пользовательский интерфейс простирается от соответствующих сторон окна приложения. Чтобы избежать перекрытия с этим типом системного пользовательского интерфейса, пользовательский интерфейс приложения должен быть вставлен на эту величину.
Эти встроенные типы вставок Android доступны через WindowInsets
:
Вставки, описывающие строки состояния. Это верхние системные панели пользовательского интерфейса, содержащие значки уведомлений и другие индикаторы. | |
Вставки строки состояния для случаев, когда они видны. Если строки состояния в данный момент скрыты (из-за входа в режим полного экрана с эффектом погружения), то основные вставки строки состояния будут пустыми, но эти вставки не будут пустыми. | |
Вставки, описывающие панели навигации. Это системные панели пользовательского интерфейса на левой, правой или нижней стороне устройства, описывающие панель задач или значки навигации. Они могут меняться во время выполнения в зависимости от предпочитаемого пользователем метода навигации и взаимодействия с панелью задач. | |
Вставки панели навигации, когда они видны. Если панели навигации в данный момент скрыты (из-за входа в режим полного экрана с эффектом погружения), то вставки основной панели навигации будут пустыми, но эти вставки не будут пустыми. | |
Вставка, описывающая оформление окна пользовательского интерфейса системы, если оно находится в окне произвольной формы, например, в верхней строке заголовка. | |
Вставки панели заголовка, когда они видны. Если панели заголовка в данный момент скрыты, то основные вставки панели заголовка будут пустыми, но эти вставки не будут пустыми. | |
Объединение вставок системной панели, включающих строки состояния, панели навигации и строку заголовка. | |
Вставки системной панели, когда они видны. Если системные панели в данный момент скрыты (из-за перехода в режим полного экрана с эффектом погружения), то основные вставки системной панели будут пустыми, но эти вставки не будут пустыми. | |
Вставки, описывающие объем пространства внизу, занимаемого программной клавиатурой. | |
Вставки, описывающие объем пространства, который занимала программная клавиатура до текущей анимации клавиатуры. | |
Вставки, описывающие объем пространства, которое будет занимать программная клавиатура после текущей анимации клавиатуры. | |
Тип вставок, описывающих более подробную информацию о навигационном пользовательском интерфейсе, указывающий объем пространства, где «тапы» будут обрабатываться системой, а не приложением. Для прозрачных навигационных панелей с навигацией жестами некоторые элементы приложения могут быть нажимаемыми через системный навигационный пользовательский интерфейс. | |
Вставки нажимаемых элементов, когда они видны. Если нажимаемые элементы в данный момент скрыты (из-за входа в режим полного экрана с эффектом погружения), то основные вставки нажимаемых элементов будут пустыми, но эти вставки не будут пустыми. | |
Вставки, представляющие количество вставок, где система будет перехватывать жесты для навигации. Приложения могут вручную указать обработку ограниченного количества этих жестов через | |
Подмножество системных жестов, которые всегда будут обрабатываться системой и которые нельзя отключить с помощью | |
Вставки показывают расстояние, необходимое для избежания наложения выреза на дисплее (выемки или отверстия). | |
Вставки, представляющие изогнутые области водопадного дисплея. Водопадный дисплей имеет изогнутые области по краям экрана, где экран начинает заворачиваться вдоль сторон устройства. |
Эти типы суммируются в трех «безопасных» типах вставок, которые гарантируют, что содержимое не будет перекрыто:
Эти «безопасные» типы вставок защищают контент различными способами в зависимости от базовой платформы вставок:
- Используйте
WindowInsets.safeDrawing
для защиты контента, который не должен отображаться под любым системным пользовательским интерфейсом. Это наиболее распространенное использование вставок: для предотвращения отображения контента, который скрыт системным пользовательским интерфейсом (частично или полностью). - Используйте
WindowInsets.safeGestures
для защиты контента с помощью жестов. Это позволяет избежать конфликта системных жестов с жестами приложений (например, для нижних листов, каруселей или в играх). - Используйте
WindowInsets.safeContent
как комбинациюWindowInsets.safeDrawing
иWindowInsets.safeGestures
, чтобы гарантировать отсутствие визуального перекрытия содержимого и перекрытия жестов.
Рекомендовано для вас
- Примечание: текст ссылки отображается, когда JavaScript отключен.
- Материальные компоненты и макеты
- Перенести
CoordinatorLayout
в Compose - Другие соображения