LazyColumn,如何添加窗口insets填充到我的填充?



我有一个LazyColumn和一个contentPadding = PaddingValues(16.dp)

现在,我想添加导航栏的高度到底部填充,以实现"边缘到边缘"。影响

socontentPadding = 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()
)
}

但感觉不对

.asPaddingValues()之前,WindowInsets可以通过WindowInsets.add()扩展功能添加到已有的WindowInsets中。

val padding: Dp = 16.dp
val contentPadding: PaddingValues = WindowInsets(
left = padding,
top = padding,
right = padding,
bottom = padding,
)
.add(WindowInsets.navigationBars)
.asPaddingValues()
LazyColumn(
contentPadding = contentPadding,
...
)
不幸的是,目前还没有类似于PaddingValues(all: Dp)的方便的WindowInsets构造函数。Google在Now in Android存储库的这一行使用了这个约定。

最新更新