创建可滚动网格

您可以使用惰性网格管理大型数据集和动态内容,从而提高应用性能。使用惰性网格可组合项,您可以在可滚动容器中显示项目,跨多个列或行展开。

版本兼容性

此实现要求您的项目 minSDK 设置为 API 级别 21 或更高。

依赖项

确定网格方向

LazyHorizontalGridLazyVerticalGrid 可组合项提供对在网格中显示项目的支持。惰性垂直网格在其项目在垂直可滚动容器中显示,跨多个列展开,而惰性水平网格在水平轴上具有相同的行为。

创建可滚动网格

以下代码创建了一个包含三列的水平滚动网格

@Composable
fun ScrollingGrid() {
    val itemsList = (0..15).toList()

    val itemModifier = Modifier
        .border(1.dp, Color.Blue)
        .width(80.dp)
        .wrapContentSize()

    LazyHorizontalGrid(
        rows = GridCells.Fixed(3),
        horizontalArrangement = Arrangement.spacedBy(16.dp),
        verticalArrangement = Arrangement.spacedBy(16.dp)
    ) {
        items(itemsList) {
            Text("Item is $it", itemModifier)
        }

        item {
            Text("Single item", itemModifier)
        }
    }
}

关于代码的关键点

  • LazyHorizontalGrid 可组合项确定网格的水平方向。
    • 要创建垂直网格,请改用 LazyVerticalGrid
  • rows 属性指定如何排列网格内容。
    • 对于垂直网格,请使用 columns 属性指定排列方式。
  • items(itemsList)itemsList 添加到 LazyHorizontalGrid。lambda 为每个项目呈现一个 Text 可组合项并将文本设置为项目描述。
  • item() 将单个项目添加到 LazyHorizontalGrid,而 lambda 以与 items() 类似的方式呈现单个 Text 可组合项。
  • GridCells.Fixed 定义行数或列数。
  • 要创建尽可能多行的网格,请使用 GridCells.Adaptive 设置行数。

    在以下代码中,20.dp 值指定每列至少为 20.dp,并且所有列的宽度相等。如果屏幕宽度为 88.dp,则共有 4 列,每列 22.dp。

结果

图 1. 使用 LazyHorizontalGrid 的水平可滚动网格。

包含本指南的收藏集

本指南是涵盖更广泛 Android 开发目标的这些精选快速指南收藏集的一部分

列表和网格允许您的应用以用户易于理解的直观形式显示集合。
了解可组合函数如何让您轻松创建基于 Material Design 设计系统的精美 UI 组件。
此视频系列介绍了各种 Compose API,快速向您展示可用的内容以及如何使用它们。

有问题或反馈?

访问我们的常见问题页面,了解快速指南,或与我们联系,告诉我们您的想法。