You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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")
}

核心修改说明

  1. 布局结构重构:将原外层Row内的两个子Row拆分为三个直接子元素,确保空间分配逻辑清晰。
  2. 权重生效逻辑:
    • 中间文本+心形区域通过Modifier.weight(1f)占据左侧图标与右侧购物车之间的所有可用空间。
    • 内部Text添加Modifier.weight(1f),配合maxLines=1和overflow=TextOverflow.Ellipsis,实现文本过长时的省略效果;文本短时则仅占据自身内容宽度,心形图标紧随其后。
  3. 购物车固定定位:直接将购物车图标置于外层Row最右侧,无需额外嵌套Row,确保始终处于布局最右端。

内容的提问来源于stack exchange,提问作者Kishore Jethava

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 17:05:19