LazyColumn, как добавить отступы окон к моему отступу?

у меня естьLazyColumnгде у меня естьcontentPadding = PaddingValues(16.dp)

Теперь я хочу добавить высоту панели навигации к нижнему отступу, чтобы добиться эффекта «от края до края».

такcontentPadding = WindowInsets.navigationBars.asPaddingValues()

Но как сложить эти два вместе?

то есть

      LazyColumn(
        contentPadding = WindowInsets.navigationBars.asPaddingValues() + PaddingValues(16.dp),

я создал это

      @Composable
operator fun PaddingValues.plus(paddingValues: PaddingValues): PaddingValues {
    val layoutDirection = LocalLayoutDirection.current
    return PaddingValues(
        start = calculateStartPadding(layoutDirection) + paddingValues.calculateStartPadding(layoutDirection),
        top = calculateTopPadding() + paddingValues.calculateTopPadding(),
        end = calculateEndPadding(layoutDirection) + paddingValues.calculateEndPadding(layoutDirection),
        bottom = calculateBottomPadding() + paddingValues.calculateBottomPadding()
    )
}

Но это кажется неправильным

1 ответ

До.asPaddingValues(), можно добавить к существующим черезWindowInsets.add()функция расширения.

      val padding: Dp = 16.dp

val contentPadding: PaddingValues = WindowInsets(
    left = padding,
    top = padding,
    right = padding,
    bottom = padding,
)
    .add(WindowInsets.navigationBars)
    .asPaddingValues()

LazyColumn(
    contentPadding = contentPadding,
    ...
)

К сожалению, нет удобногоWindowInsetsконструктор аналогичныйPaddingValues(all: Dp)в это время. Google использует это соглашение в репозитории Now In Android в этой конкретной строке .