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

Jetpack Compose中LazyRow/LazyColumn如何为Items设置Weight?

LazyRow中Weight属性不生效的解决办法

你遇到的问题是因为LazyRow的布局逻辑和普通Row不同,再加上设置了horizontalArrangement = Arrangement.Center,导致权重分配无法生效。要实现三个按钮各占1/3宽度的效果,按以下方式修改代码:

修正后的代码

@Composable
fun NumberBoardRow(num: List<String>) {
    LazyRow(
        modifier = Modifier.fillMaxWidth(),
        verticalAlignment = Alignment.CenterVertically
        // 移除Arrangement.Center,避免限制元素拉伸
    ) {
        itemsIndexed(num) { index, number ->
            NumberButton(
                modifier = Modifier
                    .weight(1f)
                    .fillMaxWidth(),
                number = number,
                onClick = {}
            )
        }
    }
}

关键修改点

  • 移除horizontalArrangement = Arrangement.Center:这个配置会让所有item在LazyRow内居中对齐,无法触发weight的拉伸逻辑,必须去掉。
  • 增加fillMaxWidth():仅设置weight(1f)只能分配空间,需要配合fillMaxWidth()让按钮填满分配到的宽度,否则按钮会保持自身固有尺寸。
  • 修正参数顺序:你原代码中itemsIndexed的参数写反了,正确顺序是先index后item,避免传递错误的数据给NumberButton。

另外,确保NumberButton的定义能正确接收并应用外部传入的modifier,比如:

@Composable
fun NumberButton(
    modifier: Modifier = Modifier,
    number: String,
    onClick: () -> Unit
) {
    Button(
        modifier = modifier,
        onClick = onClick
    ) {
        Text(text = number)
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 22:57:31