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

Jetpack Compose中Row内指定文本空间不足省略且不撑满整行

实现效果说明

当前需要实现的文本布局规则:

  • 外层Row宽度自适应内容,仅占用内容展示所需的最小空间,不会强制占满整行
  • 水平空间充足时,两个文本全部完整展示
  • 水平空间不足时,仅第一个文本触发末尾省略效果,第二个文本始终完整显示、不被截断

直接给第一个Text添加默认参数的weight(1f)会导致Row撑满整行,不符合自适应要求。

核心实现代码
Row(
    modifier = Modifier.background(Color.Red)
) {
    Text(
        text = ELLIPSIZE_THIS_TEXT,
        maxLines = 1,
        overflow = TextOverflow.Ellipsis,
        // 核心配置:设置权重且关闭fill强制填充
        modifier = Modifier.weight(1f, fill = false)
    )
    Text(
        text = LEAVE_THIS_TEXT_NOT_ELLIPSIZED,
        maxLines = 1,
        overflow = TextOverflow.Visible
    )
}
实现原理
  • Compose中weight修饰符的第二个参数fill默认值为true,此时带weight的元素会强制占满父布局分配的所有剩余空间,最终导致Row撑满整行宽度。
  • 将fill设置为false后,弹性布局规则仅在空间不足时生效:当两个文本总宽度超过可用水平空间时,带weight的第一个文本会被压缩到剩余可用宽度,触发省略效果;第二个无weight的文本不会被压缩,始终完整展示。
  • 当水平空间充足时,带weight的第一个文本不会强制占满剩余空间,会按自身内容实际宽度布局,Row整体宽度等于两个文本实际宽度之和,实现宽度自适应内容的效果。

内容的提问来源于stack exchange,提问作者Andrew Kolubov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 02:45:35