我有一个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存储库的这一行使用了这个约定。