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

Jetpack Compose如何让Row内子项超出屏幕动态宽度后自动换行

实现方案

直接把承载路线条目的普通Row替换为Jetpack Compose 提供的FlowRow组件即可,该组件专门用于实现流式布局,子元素总宽度超出容器宽度时会自动换行,完全符合你的需求。

依赖说明

Compose 1.4.0及以上版本中,FlowRow属于官方稳定API,包含在foundation-layout包中,确保你的项目引入对应依赖即可:

implementation "androidx.compose.foundation:foundation-layout:你项目对应的Compose版本号"

修改后代码

import androidx.compose.foundation.layout.FlowRow
import androidx.compose.foundation.layout.Arrangement

@Composable
fun StopView(
    stop: Stop
) {
    Column {
        Text(text = stop.name)
        // 替换原有Row为FlowRow
        FlowRow(
            // 同一行内条目之间的横向间距
            horizontalArrangement = Arrangement.spacedBy(10.dp),
            // 不同行之间的纵向间距
            verticalArrangement = Arrangement.spacedBy(8.dp),
            modifier = Modifier.padding(horizontal = 10.dp, vertical = 4.dp)
        ) {
            stop.routes.forEach { route ->
                Row(
                    modifier = Modifier.align(Alignment.CenterVertically)
                ) {
                    Image(
                        painterResource(id = imageName),
                        contentDescription = route.type.toString(),
                        modifier = Modifier
                            .height(25.dp)
                            .width(25.dp)
                    )
                    Spacer(modifier = Modifier.width(5.dp))
                    Text(text = route.name)
                }
            }
        }
    }
}

可选调整项

  • 如果你需要保留原来每个条目单独的padding设置,也可以删除FlowRow的间距参数,恢复子Row的padding属性即可。
  • 如果你使用的Compose版本低于1.4.0,可以使用Accompanist的FlowLayout组件,用法和原生FlowRow基本一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:15:03