我们如何定义一个带有填充的列,并且只有一个项目不继承 Jetpack Compose 中该列的填充?
How can we define a column with padding and just one item doesn't inherit the padding of the column in Jetpack Compose?
我有一列有很多项目,我想为该列设置填充,因为所有项目都有相同的填充,除了其中一个没有填充,我如何考虑该特定的例外物品?或者是否可以添加一个属性,表示不获取 parent 填充?我知道我可以删除列的填充并逐一添加,但我想问问任何知道这一点的人,还有其他方法吗?
Column(
modifier = Modifier
.fillMaxSize()
.verticalScroll(rememberScrollState()),
.padding(16.dp),
verticalArrangement = Arrangement.spacedBy(16.dp)
) {
Text(text = "Teaser1")
Text(text = "Teaser2")
Text(text = "Teaser3")
Text(text = "Teaser")
Text(text = "Teaser4")
Text(text = "Teaser5")
...
}
预先感谢您的帮助。
您可以使用 Modifier.layout.
我通过为 measure
添加填充并在 place
期间应用填充偏移来覆盖宽度约束。
Text(
text = "Teaser",
modifier = Modifier
.layout { measurable, constraints ->
val noPaddingConstraints = constraints.copy(
maxWidth = constraints.maxWidth + (padding * 2).roundToPx()
)
val placeable = measurable.measure(noPaddingConstraints)
layout(placeable.width, placeable.height) {
placeable.place(x = -padding.roundToPx(), y = 0)
}
}
)
我有一列有很多项目,我想为该列设置填充,因为所有项目都有相同的填充,除了其中一个没有填充,我如何考虑该特定的例外物品?或者是否可以添加一个属性,表示不获取 parent 填充?我知道我可以删除列的填充并逐一添加,但我想问问任何知道这一点的人,还有其他方法吗?
Column(
modifier = Modifier
.fillMaxSize()
.verticalScroll(rememberScrollState()),
.padding(16.dp),
verticalArrangement = Arrangement.spacedBy(16.dp)
) {
Text(text = "Teaser1")
Text(text = "Teaser2")
Text(text = "Teaser3")
Text(text = "Teaser")
Text(text = "Teaser4")
Text(text = "Teaser5")
...
}
预先感谢您的帮助。
您可以使用 Modifier.layout.
我通过为 measure
添加填充并在 place
期间应用填充偏移来覆盖宽度约束。
Text(
text = "Teaser",
modifier = Modifier
.layout { measurable, constraints ->
val noPaddingConstraints = constraints.copy(
maxWidth = constraints.maxWidth + (padding * 2).roundToPx()
)
val placeable = measurable.measure(noPaddingConstraints)
layout(placeable.width, placeable.height) {
placeable.place(x = -padding.roundToPx(), y = 0)
}
}
)