许多应用存在滚动展示同类项目集合的需求,例如显示图片、视频、音乐、新闻、商品等。此类场景可以根据项目排列方式分别选择List、Grid、WaterFlow实现,在圆形屏幕推荐使用ArcList。
当应用存在滚动展示不同类别项目集合的需求,例如,电商首页同时包含多列网格分类入口、瀑布流商品卡片、线性列表推荐,或社交应用信息流同时包含文本列表、九宫格图片、视频卡片。此类场景可以在可滚动父组件(Scroll、List、WaterFlow)内组合使用多种懒加载布局来实现。
List适合单列和多列宽度相同的场景,如通讯录、音乐列表、购物清单等。
直播评论、即时聊天等应用场景需要在列表底部插入数据时,内容应自动向上滚动,以展示新插入的节点,此功能可通过配置stackFromEnd实现。

网格布局由“行”和“列”分割的单元格组成,通过指定“项目”所在单元格实现多种布局,应用场景包括九宫格图片展示、日历、计算器等。
对于部分项目占用多行或多列的场景,可以通过在创建Grid时传入合适的GridLayoutOptions来实现。

瀑布流布局是一种多列等宽但高度不等的布局方式,适用于需要错落排列的场景,如图片和视频展示、商品推荐等。
同一个页面内有不同列数分段混合布局的场景,可以通过设置WaterFlowOptions对象说明的sections实现。

懒加载布局容器是一类嵌套在可滚动父组件(Scroll、List、WaterFlow)内部,负责按需加载子组件的布局容器。这类容器本身不提供滚动能力,由父组件统一处理滚动。它仅创建和布局处于可滚动父组件可视区域内的子组件,并在帧间空闲时隙预加载可视区域上方和下方各半屏的内容,从而减少首帧渲染时间和内存开销。ArkUI提供了三种支持懒加载的布局容器组件:垂直线性布局LazyColumnLayout、垂直网格布局LazyVGridLayout、垂直瀑布流布局LazyVWaterFlowLayout。不同的懒加载布局容器提供不同的布局模式,开发者可以将多种类型的懒加载布局容器组合在同一个父组件中使用,灵活实现混合布局。

| 业务场景 | List | Grid | WaterFlow | ArcList |
|---|---|---|---|---|
| 滚动通用能力 | 支持 | 支持 | 支持 | 支持 |
| 项目分组 | ListItemGroup | GridLayoutOptions | WaterFlowSections | 不支持 |
| 指定项目吸顶 | 支持通过sticky属性实现吸顶 | 不支持 | 不支持 | 不支持 |
| 项目拖拽排序 | 支持拖拽排序,包括内置动画和拖动到边缘自动滚动 | 仅所有项目都占1行1列时支持内置动画supportAnimation,且不支持拖动到边缘自动滚动 | 不支持 | 不支持 |
| 项目横滑 | 支持通过swipeAction属性实现横滑 | 不支持 | 不支持 | 不支持 |
| 项目间距 | 支持 | 支持 | 支持 | 支持 |
| 项目分割线 | 支持 | 不支持 | 不支持 | 不支持 |