Для простоты использования многие встроенные composable-функции Material 3 (androidx.compose.material3) сами обрабатывают отступы в зависимости от того, как эти функции размещены в приложении в соответствии со спецификациями Material.
Функции для обработки вставок
Ниже приведен список компонентов Material, которые автоматически обрабатывают вставки.
Панели приложения
TopAppBar/CenterAlignedTopAppBar/MediumTopAppBar/LargeTopAppBar. Применяет верхнюю и горизонтальные стороны системных строк в качестве отступов, поскольку они используются в верхней части окна.BottomAppBar– применяет нижнюю и боковые стороны системных строк в качестве полей.
Контейнеры контента
ModalDrawerSheet/DismissibleDrawerSheet/PermanentDrawerSheet(контент внутри модальной панели навигации): применяет к контенту вертикальные и начальные вставки.ModalBottomSheet: применяет отступы снизу.NavigationBar– применяются отступы bottom и horizontal.NavigationRail– применяет вертикальные и начальные вставки.
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") } )