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

Jetpack Compose如何在Row中实现首个Text宽度自适应到第二个Text起始位置

Jetpack Compose Row 双文本布局最优实现方案

你需要的效果可以通过调整 Modifier.weight 的使用方式直接实现,完全不需要引入 ConstraintLayout,核心逻辑是:仅给需要自适应填充剩余空间的第一个文本加 weight 属性,第二个文本不配置 weight,让它默认只占用自身内容所需的最小宽度,具体实现代码如下:

Row(
    modifier = Modifier.fillMaxWidth(),
    verticalAlignment = Alignment.CenterVertically, // 可选,控制两个文本垂直居中对齐
    horizontalArrangement = Arrangement.Start // 强制内容从Row起始位置开始排列,解决标题不靠左的问题
) {
    Text(
        "Some long title abcd efgh ijkl mnop qrst uvwx yzzzzz Some long title abcd efgh ijkl mnop qrst uvwx yzzzzz",
        maxLines = 1,
        overflow = TextOverflow.Ellipsis,
        // 仅给第一个文本加weight,剩余可用空间全部分配给它,超长自动裁切加省略号
        modifier = Modifier.weight(1f)
    )
    // 第二个文本不加weight,默认宽度包裹内容即可,可按需加左侧间距
    Text("View all", modifier = Modifier.padding(start = 8.dp))
}

原代码问题说明

你之前的写法给两个 Text 都加了 weight 属性,相当于把整个 Row 的宽度按 5:1 的比例强制分配给两个组件,哪怕第二个 "View all" 内容很短,也会强制占用 1/6 的 Row 宽度,既浪费空间也容易出现对齐异常。如果调整后还是存在标题不靠左的问题,检查下是否给第一个 Text 设置了 textAlign = Center 之类的属性,删除即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:48:04