Android Jetpack Compose实现文本触容器边界自动省略效果
在Jetpack Compose中实现类似TableLayout shrinkColumns的文本省略效果
要实现「文本默认wrap_content布局,空间不足时自动省略,同时右侧文本始终显示」的效果,只需给左侧文本添加Modifier.weight(1f, fill = false)即可,核心是利用weight分配剩余空间,同时通过fill=false保留wrap_content的特性。
修改后的代码
Row(modifier = Modifier.fillMaxWidth()) { Text( modifier = Modifier .background(Color.Cyan) .weight(1f, fill = false), // 关键配置 text = "Weekend Weekend Weekend Weekend Weekend Weekend ", maxLines = 1, overflow = TextOverflow.Ellipsis ) Text( modifier = Modifier .background(Color.Red), text = "(0)" ) }
原理说明
weight(1f):让左侧文本占据Row中除右侧文本外的所有剩余空间,确保右侧文本优先获得所需的显示空间,不会被挤出。fill = false:默认fill=true会强制组件占满分配的空间,而fill=false时,只有当文本内容超过分配空间时才会填充该空间,内容较短时保持wrap_content的布局,完美匹配XML中shrinkColumns的行为。- 配合
maxLines=1和overflow=TextOverflow.Ellipsis,当文本超出分配空间时自动在末尾显示省略号。
内容的提问来源于stack exchange,提问作者TRose
相关产品推荐
相关产品推荐

