Для удобства многие встроенные компоненты Material 3 (androidx.compose.material3) сами обрабатывают отступы в зависимости от того, как они размещены в приложении в соответствии со спецификациями Material.
Компонуемые функции для работы с отступами
Ниже приведен список компонентов Material, которые автоматически обрабатывают вставки.
Панели приложений
TopAppBar/CenterAlignedTopAppBar/MediumTopAppBar/LargeTopAppBar: применяет верхнюю и горизонтальные стороны системных строк в качестве отступов, поскольку используется в верхней части окна.BottomAppBar– применяет нижнюю и горизонтальные стороны системных строк в качестве полей.
Контейнеры контента
ModalDrawerSheet/DismissibleDrawerSheet/PermanentDrawerSheet(контент в модальном навигационном меню): применяет к контенту вертикальные и начальные вставки.ModalBottomSheet: Применяет отступы снизу.NavigationBar– применяет отступы снизу и по горизонтали.NavigationRail– применяет вставки vertical и start.
Scaffold
По умолчанию Scaffold предоставляет вставки в виде параметра PaddingValues, который можно использовать.
Scaffold не добавляет вставки в контент. Это ваша обязанность.
Например, чтобы использовать эти вставки с элементом LazyColumn внутри элемента Scaffold:
Scaffold { innerPadding -> // innerPadding contains inset information for you to use and apply LazyColumn( // consume insets as scaffold doesn't do it by default modifier = Modifier.consumeWindowInsets(innerPadding), contentPadding = innerPadding ) { // .. } }
В следующем видео показано, как выглядит LazyColumn в Scaffold с отключенным и включенным полноэкранным режимом:
Как правило, для того чтобы отделить интерфейс приложения от системного интерфейса и вырезов на экране, достаточно использовать параметр PaddingValues в Scaffold. Если вы используете Scaffold, не применяйте дополнительные способы обработки отступов, такие как линейки, модификаторы отступов или модификаторы размера отступов, чтобы не добавить слишком много отступов в интерфейс.
Как переопределить отступы по умолчанию
Вы можете изменить параметр windowInsets, передаваемый в composable-функцию, чтобы настроить ее поведение. Этот параметр может представлять собой другой тип вставки окна, которую нужно применить, или может быть отключен с помощью пустого экземпляра: WindowInsets(0, 0, 0, 0).
Например, чтобы отключить обработку врезки на LargeTopAppBar, задайте для параметра windowInsets пустой экземпляр:
LargeTopAppBar( windowInsets = WindowInsets(0, 0, 0, 0), title = { Text("Hi") } )