Проблема
Я ищу способ изменить PaddingValues, чтобы они не включали BottomPadding .
Моя текущая реализация выглядит так, но здесь мне нужно передать LayoutDirection, что кажется очень неуклюжим.
fun PaddingValues.exceptBottomPadding(layoutDirection: LayoutDirection) =
PaddingValues(
top = calculateTopPadding(),
bottom = 0.dp,
end = calculateEndPadding(layoutDirection),
start = calculateStartPadding(layoutDirection)
)
Изначально я надеялся, что будет способ изменения PaddingValues, подобный классу данных, например myPadding.copy(bottom = 0.dp), но нет, это было бы слишком просто...
Использование
Я использую свое приложение Material3-Android «от края до края».
Для этого мой Scaffold предоставляет мой контент с PaddingValues (включая Insets).
Однако мое основное представление прокрутки контента также должно быть от края до края, поэтому я бы хотел игнорировать нижнюю часть часть PaddingValues.
(позже я повторно добавлю его как дополнение к содержимому, но это достаточно просто).
Что-то вроде:
Scaffold(
topBar = { ... },
) { paddingWithInset ->
LazyColumn(
modifier = Modifier.padding(paddingWithInset.exceptBottomPadding()),
contentPadding = PaddingValues(bottom = paddingWithInset.calculateBottomPadding())
) {
...
}
}
Я пробовал просто применить полный элемент paddingWithInset в качестве contentPadding, но это убивает эффект overscrollEffect
Изменить
ExceptBottomPadding, конечно, можно. сделать составным, что позволит получить доступ к LocalLayoutDirection. Однако это по-прежнему кажется неуклюжим.
@Composable
fun PaddingValues.exceptBottomPadding(): PaddingValues {
val layoutDirection = LocalLayoutDirection.current
return PaddingValues(
top = calculateTopPadding(),
bottom = 0.dp,
end = calculateEndPadding(layoutDirection),
start = calculateStartPadding(layoutDirection)
)
}
Подробнее здесь: https://stackoverflow.com/questions/744 ... ck-compose