Используйте вставки из материала 3

Для удобства использования многие встроенные компоненты Material 3 ( androidx.compose.material3 ) обрабатывают отступы самостоятельно, в зависимости от того, как эти компоненты размещены в вашем приложении в соответствии со спецификациями Material.

Вставка обрабатывает составные элементы

Ниже приведён список компонентов материала , которые автоматически обрабатывают отступы.

Панели приложений

  • TopAppBar / SmallTopAppBar / CenterAlignedTopAppBar / MediumTopAppBar / LargeTopAppBar : Применяет верхний и горизонтальный края системных панелей в качестве отступов, поскольку они используются в верхней части окна.
  • BottomAppBar : Применяет нижний и горизонтальный края системных панелей в качестве отступов.

Контейнеры содержимого

  • ModalDrawerSheet / DismissibleDrawerSheet / PermanentDrawerSheet (содержимое внутри модального навигационного меню): Применяет вертикальные и начальные отступы к содержимому.
  • ModalBottomSheet : Применяет нижние отступы.
  • NavigationBar : Применяет нижний и горизонтальный отступы.
  • NavigationRail : Применяет вертикальные и начальные отступы.

Строительные леса

По умолчанию 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 передаваемый в составной объект, чтобы настроить его поведение. Этот параметр может представлять собой другой тип отступа окна для применения или быть отключен путем передачи пустого экземпляра: WindowInsets(0, 0, 0, 0) .

Например, чтобы отключить обработку отступов для LargeTopAppBar , установите параметр windowInsets в пустое значение:

LargeTopAppBar(
    windowInsets = WindowInsets(0, 0, 0, 0),
    title = {
        Text("Hi")
    }
)