创建可滚动网格

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

版本兼容性

此实现要求您的项目 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,快速向您展示了哪些 API 可用以及如何使用它们。

有疑问或反馈?

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