Jetpack Compose需求:文本溢出缩略+图标位置自适应布局
Jetpack Compose 双场景布局实现方案
针对你需要的两种布局行为,调整后的代码如下,同时解决原方案中weight失效的问题:
Row( modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically ) { // 左侧固定图标区域 Row(modifier = Modifier.wrapContentWidth()) { Icon(Icons.Filled.Search, contentDescription = "Search") Spacer(modifier = Modifier.width(18.dp)) Icon(Icons.Filled.Add, contentDescription = "Add") Spacer(modifier = Modifier.width(12.dp)) } // 中间文本+心形区域:占据左侧图标与右侧购物车之间的所有空间 Row( modifier = Modifier.weight(1f), verticalAlignment = Alignment.CenterVertically ) { Text( text = "If text is long, then cart icon show at end with ellipsis text", maxLines = 1, overflow = TextOverflow.Ellipsis, modifier = Modifier.weight(1f) ) Spacer(modifier = Modifier.width(12.dp)) Icon(Icons.Filled.Favorite, contentDescription = "Favorite") } // 右侧购物车图标:始终固定在最右端 Icon(Icons.Filled.ShoppingCart, contentDescription = "Shopping Cart") }
核心修改说明
- 布局结构重构:将原外层
Row内的两个子Row拆分为三个直接子元素,确保空间分配逻辑清晰。 - 权重生效逻辑:
- 中间文本+心形区域通过
Modifier.weight(1f)占据左侧图标与右侧购物车之间的所有可用空间。 - 内部
Text添加Modifier.weight(1f),配合maxLines=1和overflow=TextOverflow.Ellipsis,实现文本过长时的省略效果;文本短时则仅占据自身内容宽度,心形图标紧随其后。
- 中间文本+心形区域通过
- 购物车固定定位:直接将购物车图标置于外层
Row最右侧,无需额外嵌套Row,确保始终处于布局最右端。
内容的提问来源于stack exchange,提问作者Kishore Jethava
相关产品推荐
相关产品推荐

