Android Compose:实现Row内首文本换行且优先溢出的布局
解决Compose中Row内双文本的优先溢出布局需求
你需要的效果可以通过给第一个Text添加Modifier.weight(1f, fill = false)来实现,同时配合正确的换行与溢出设置,具体代码如下:
Row( modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically ) { Text( text = title, modifier = Modifier.weight(1f, fill = false), softWrap = true, overflow = TextOverflow.Visible ) Text( text = "Fixed text", maxLines = 1, overflow = TextOverflow.Ellipsis ) }
关键说明:
weight(1f, fill = false):这是核心设置,weight(1f)让第一个文本在空间紧张时优先分配可用空间,确保它先换行或溢出;fill = false则避免空间充足时第一个文本强行撑满宽度,让第二个文本能紧跟在第一个文本之后。- 第一个
Text开启softWrap = true支持自动换行,overflow可根据需求选择Visible(直接溢出)或Ellipsis(显示省略号)。 - 第二个
Text通过maxLines = 1限制单行显示,只有当第一个文本完全占满宽度后,它才会被挤压溢出。
对比之前方案的问题:
- 方案a:未设置weight,布局会优先保证第二个文本的完整显示,空间不足时第二个文本先溢出,不符合需求。
- 方案b:使用了默认
fill = true的weight,导致空间充足时第一个文本强制撑满宽度,第二个文本被挤到最右侧,无法紧跟第一个文本。
内容的提问来源于stack exchange,提问作者Eyjafl
相关产品推荐
相关产品推荐

