首页 > 解决方案 > 如何使用设置的全跨度或动态 GridCells 数来实现 LazyVerticalGrid。在 jetpack compose 中固定?

问题描述

就像SliverFlutterStaggeredGridLayoutManager在android中一样reyclerview

所以我可以在网格布局中插入横幅或其他东西
在此处输入图像描述

标签: androidandroid-jetpack-compose

解决方案


LazyVerticalGrid现在没有这样的功能。它现在是“实验性的”,这意味着可以轻松更改 api,因此如果您认为它应该包含此功能 - 您可以在Compose issue tracker上创建请求。

GridCells.Fixed里面很简单:里面LazyColumn有很多Rows。

您可以使用相同的技术来创建所需的布局:

val colors = listOf(
    Color.Gray,
    Color.Red,
    Color.Cyan,
    Color.Blue,
    Color.LightGray,
    Color.Yellow,
    Color.Magenta,
)
val rowCounts = listOf(3, 3, 1, 1, 1)
var i = 0
LazyColumn(
    modifier = Modifier
        .fillMaxWidth()
) {
    items(rowCounts) { rowCount ->
        Row(
            modifier = Modifier
        ) {
            for (j in 0 until rowCount) {
                Box(
                    modifier = Modifier
                        .height(100.dp)
                        .weight(1f)
                        .background(colors[i++ % colors.count()])
                )
            }
        }
    }
}

结果:


推荐阅读