首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android Jetpack Compose中的Modifier.wrapContentWidth() vs Modifier.width(IntrinsicSize.Max)

Android Jetpack Compose中的Modifier.wrapContentWidth() vs Modifier.width(IntrinsicSize.Max)
EN

Stack Overflow用户
提问于 2021-03-03 21:41:28
回答 1查看 586关注 0票数 2

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

代码语言:javascript
复制
Column(
    modifier = Modifier.wrapContentWidth()
//  modifier = Modifier.width(IntrinsicSize.Max)
) {
    Text("short text", Modifier.background(Color.LightGray))
    Text("some longer text", Modifier.background(Color.LightGray))
}

EN

回答 1

Stack Overflow用户

发布于 2021-03-03 21:41:28

让我们在文本之间添加一个Divider。我们希望分隔符与最宽的文本一样宽。

代码语言:javascript
复制
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,并且不会影响列宽度。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66458270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档