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
相关产品推荐
相关产品推荐

