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

如何基于文本长度动态调整Row列权重,实现左右文本自适应分配宽度

实现方案

你可以通过BoxWithConstraints配合widthIn限制轻松实现该布局,核心逻辑是先拿到父布局总宽度,限制右侧文本最大宽度为总宽度的40%,左侧文本占满剩余空间,天然满足左侧最小占60%的要求。

示例代码

BoxWithConstraints(modifier = Modifier.fillMaxWidth()) {
    // 计算右侧文本允许的最大宽度:总宽度的40%
    val rightMaxWidth = maxWidth * 0.4f
    Row(modifier = Modifier.fillMaxWidth()) {
        Text(
            text = left,
            modifier = Modifier
                .padding(8.dp)
                .weight(1f) // 占满右侧文本之外的所有剩余空间
        )
        Text(
            text = right,
            modifier = Modifier
                .padding(8.dp)
                .widthIn(max = rightMaxWidth) // 宽度不超过总宽度的40%,不足时按实际内容宽度显示
        )
    }
}

逻辑说明

  • 当右侧文本内容较长时,会被限制在最大40%总宽度,此时左侧自动占满剩余的60%宽度,符合两个文本都较长的场景要求
  • 当右侧文本内容较短、实际宽度不足40%总宽度时,右侧仅占用自身内容所需宽度,剩余空间全部归左侧使用,符合右侧较短的场景要求

如果需要控制右侧文本过长时的展示效果,可给右侧Text添加maxLines、overflow等属性自行调整,比如设置单行省略:

Text(
    text = right,
    modifier = Modifier
        .padding(8.dp)
        .widthIn(max = rightMaxWidth),
    maxLines = 1,
    overflow = TextOverflow.Ellipsis
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:54:01