假设我想创建一个与其中最宽的子Text一样宽的Column。为此,列可以使用.wrapContentWidth()修饰符或.width(IntrinsicSize.Max),但结果看起来是一样的。这两个修饰符之间的区别是什么?例如:
Column(
modifier = Modifier.wrapContentWidth()
// modifier = Modifier.width(IntrinsicSize.Max)
) {
Text("short text", Modifier.background(Color.LightGray))
Text("some longer text", Modifier.background(Color.LightGray))
}


发布于 2021-03-03 21:41:28
让我们在文本之间添加一个Divider。我们希望分隔符与最宽的文本一样宽。
Column(
modifier = Modifier.wrapContentWidth()
// modifier = Modifier.width(IntrinsicSize.Max)
) {
Text("short text", Modifier.background(Color.LightGray))
Divider(color = Color.Red)
Text("some longer text", Modifier.background(Color.LightGray))
}


如您所见,在使用Modifier.wrapContentWidth()的情况下,分隔符强制列与其父列一样宽。之所以会发生这种情况,是因为Divider在幕后使用了.fillMaxWidth(),而且由于列的.wrapContentWidth()不限制其子元素的宽度,因此分隔符会尽可能地扩展。
在同一时间内,Modifier.width(IntrinsicSize.Max)的行为符合我们的预期。如果没有给定约束,则分隔符不会占用空间,因此它的固有宽度为0,并且不会影响列宽度。
https://stackoverflow.com/questions/66458270
复制相似问题