| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 7 个月前 | ||
| 4 个月前 | ||
| 7 个月前 | ||
| 7 个月前 | ||
| 7 个月前 | ||
| 5 个月前 | ||
| 7 个月前 | ||
| 7 个月前 | ||
| 7 个月前 | ||
| 7 个月前 |
ArkUI使用滚动类指南文档示例
介绍
本示例通过使用ArkUI指南文档中各场景的开发示例,展示在工程中,帮助开发者更好地理解ArkUI提供的组件及组件属性并合理使用。该工程中展示的代码详细描述可查如下链接:
- 创建列表 (List)。
- 弧形列表 (ArcList)(圆形屏幕推荐使用)
- 创建网格 (Grid/GridItem)。
- 创建瀑布流 (WaterFlow)
- 创建轮播 (Swiper)。
- 创建弧形轮播 (ArcSwiper)(圆形屏幕推荐使用)
- 选项卡 (Tabs)
效果预览
| 首页 | 列表类组件目录 | 列表中显示数据示例 |
|---|---|---|
![]() |
![]() |
![]() |
缓存数预览图
标签与内容不联动预览图

使用说明
-
在主界面,可以点击对应页面,选择需要参考的组件示例。
-
在组件目录选择详细的示例参考。
-
进入示例界面,查看参考示例。
-
通过自动测试框架可进行测试及维护。
工程目录
entry/src/main/ets/
|---entryability
|---pages
| |---arcList //弧形列表
| | |---ArcListAcrScrollBar.ets
| | |---ArcListArcIndexerBar.ets
| | |---arcListBuiltInScrollerBar.ets
| | |---ArcListContents.ets
| | |---ArcListCreate.ets
| | |---ArcListCrown.ets
| | |---ArcListShow.ets
| | |---ArcListSideSlip.ets
| | |---ArcListStyles.ets
| | |---ArcLongList.ets
| | |---index.ets
| |---arcSwiper //弧形轮播
| | |---ArcSwiperAction.ets
| | |---ArcSwiperHorizontal.ets
| | |---ArcSwiperSideSlip.ets
| | |---ArcSwiperStyles.ets
| | |---ArcSwiperToggle.ets
| | |---ArcSwiperVertical.ets
| | |---index.ets
| |---grid //网格
| | |---DataInGrid.ets
| | |---GridCalculator.ets
| | |---GridDataSource.ets
| | |---GridLayout.ets
| | |---GridScrollbar.ets
| | |---GridSideToSide.ets
| | |---index.ets
| | |---LongGrid.ets
| | |---ScrollableGrid.ets
| | |---ScrollPosition.ets
| |---list //列表
| | |---AddListItem.ets
| | |---CollapseAndExpand.ets
| | |---ControlledScrollPositionList.ets
| | |---CustomListStyle.ets
| | |---DataInList.ets
| | |---DeleteListItem.ets
| | |---GroupedList.ets
| | |---index.ets
| | |---ListChatRoom.ets
| | |---ListDataSource.ets
| | |---ListIteration.ets
| | |---ListLayout.ets
| | |---LongList.ets
| | |---ResponsiveScrollPositionList.ets
| | |---StickyHeaderList.ets
| | |---SupportSlidingHand.ets
| | |---SwipeListItem.ets
| | |---TaggedListItems.ets
| |---swiper //轮播
| | |---index.ets
| | |---SwiperAndTabsLinkage.ets
| | |---SwiperAutoPlay.ets
| | |---SwiperCustomAnimation.ets
| | |---SwiperDigitIndicatorIgnoreComponentSize.ets
| | |---SwiperDirection.ets
| | |---SwiperIgnoreComponentSize.ets
| | |---SwiperIndicatorStyle.ets
| | |---SwiperLoop.ets
| | |---SwiperMultiPage.ets
| | |---SwiperPageSwitchMethod.ets
| | |---SwiperVisibleContentPosition.ets
| |---tabs //选项卡
| | |---AgeFriendlyTabs.ets
| | |---BottomTabBar.ets
| | |---ContentWillChange.ets
| | |---CustomTabBar.ets
| | |---FixedTabBar.ets
| | |---index.ets
| | |---ScrollableTabBar.ets
| | |---SideTabBar.ets
| | |---SwipeLockedTabBar.ets
| | |---TabsLayout.ets
| | |---TopTabBar.ets
| |---waterFlow //瀑布流
| | |---AgeFriendlyTabs.ets
| | |---BottomTabBar.ets
| | |---ContentWillChange.ets
| | |---CustomTabBar.ets
| | |---FixedTabBar.ets
| | |---index.ets
| | |---WaterFlowDataSource.ets
| | |---WaterFlowDynamicSwitchover.ets
| | |---WaterFlowGroupingMixing.ets
| | |---WaterFlowInfiniteScrolling.ets
| | |---WaterFlowInfiniteScrollingEarly.ets
|---pages
| |---Index.ets // 应用主页面
entry/src/ohosTest/
|---ets
| |---index.test.ets // 示例代码测试代码
具体实现
- 初始化List,可设置space(列表项间距)控制项间距离。
- 每个ListItem内通过容器组件(如Row/Column)组合内容(如头像 + 文字)。
- 配置divider添加分隔线(设置粗细、颜色、左右边距),并通过scrollBar(BarState.Auto)开启按需显示的滚动条。
- 固定List的高度,确保超出时触发滚动。
- 定义数据源(如TodoItem模型类,含id/title/isCompleted等属性,id用于ForEach的唯一 key)。
- 在List内用ForEach遍历数据源,每个循环项生成ListItem,并绑定数据(如文字显示title,复选框关联isCompleted)。
- 添加交互逻辑(如 “删除” 按钮触发数组filter移除对应项,“新增” 按钮触发数组push添加新项)。
- 配置divider和scrollBar,保证列表样式和滚动功能。
- 定义分组数据源(如GroupData接口,含groupName(分组标题)和items(组内子项数组))。
- 弧形列表 (ArcList)(圆形屏幕推荐使用) 固定List的高度,确保超出时触发滚动。 使用弧形列表可以通过在ArcList组件中按垂直方向线性排列子组件ArcListItem,可以为弧形列表中的每一项提供独立视图。此外,可以使用循环渲染来迭代一组列表项,或结合任意数量的单个视图与ForEach结构,构建复杂的弧形列表。ArcList组件支持多种渲染控制方式,包括条件渲染、循环渲染和懒加载,以生成子组件。 定义数据源(如TodoItem模型类,含id/title/isCompleted等属性,id用于ForEach的唯一 key)。
- 创建瀑布流(WaterFlow) 在List内用ForEach遍历数据源,每个循环项生成ListItem,并绑定数据(如文字显示title,复选框关联isCompleted)。 ArkUI提供了WaterFlow容器组件,用于构建瀑布流布局。WaterFlow组件支持条件渲染、循环渲染和懒加载等方式生成子组件
具体实现
- 弧形列表 (ArcList)(圆形屏幕推荐使用) 使用弧形列表可以通过在ArcList组件中按垂直方向线性排列子组件ArcListItem,可以为弧形列表中的每一项提供独立视图。此外,可以使用循环渲染来迭代一组列表项,或结合任意数量的单个视图与ForEach结构,构建复杂的弧形列表。ArcList组件支持多种渲染控制方式,包括条件渲染、循环渲染和懒加载,以生成子组件。
- 创建瀑布流(WaterFlow) ArkUI提供了WaterFlow容器组件,用于构建瀑布流布局。WaterFlow组件支持条件渲染、循环渲染和懒加载等方式生成子组件
具体实现
- 基本结构与布局。构成:使用Tabs容器包裹多个TabContent子组件。
- 页签设置:每个TabContent通过.tabBar('页签名称')方法设置其对应的导航页签。
- 布局类型:通过barPosition参数决定导航栏位置。
- 顶部导航:BarPosition.Start (默认)
- 底部导航:BarPosition.End
- 侧边导航:需额外设置.vertical(true),并通常配合barWidth或barHeight调整尺寸。
- 导航栏模式控制
- 禁止滑动切换:设置.scrollable(false)。
- 固定导航栏:设置.barMode(BarMode.Fixed),页签均分宽度,适用于分类固定的场景(如底部导航)。
- 滚动导航栏:设置.barMode(BarMode.Scrollable),页签可横向滚动,适用于分类较多的场景(如顶部导航)。
- 自定义导航栏
- 当默认的下划线样式不满足需求时(如需要图文组合),可使用@Builder构建自定义页签函数。
- 在自定义函数中,通过判断currentIndex与页签索引是否相等,来动态改变选中与未选中状态的样式(如图标、文字颜色)。
- 将自定义的@Builder函数通过.tabBar(this.builderFunc(...))方式赋给TabContent。
- 页签与内容联动
- 监听页签切换:使用Tabs的.onSelected((index: number) => { ... })方法,在回调中更新用于判断选中状态的索引值(如selectIndex),以实现自定义页签与内容页的同步高亮。
- 高级控制功能
- 切换拦截:使用.onContentWillChange回调函数,可根据业务逻辑决定是否允许切换到目标页签(返回true允许,返回false阻止)。
- 页面缓存控制 (API 19+):使用.cachedMaxCount(maxCount, TabsCacheMode)接口。用于控制最大缓存的子页面数量,避免一次性加载所有页面带来的性能问题,采用懒加载机制。缓存模式TabsCacheMode决定缓存策略(如缓存两侧页面或最近切换的页面)。
相关权限
- tabs选项卡中支持适老化AgeFriendlyTabs组件需要配置系统权限:
- 配置原因:
- import { abilityManager, Configuration } from '@kit.AbilityKit';
- abilityManager.updateConfiguration需要做以下配置
- 配置方法:
- 在module.json5中配置ohos.permission.UPDATE_CONFIGURATION权限。
- 在签名中需要配置系统权限。
依赖
不涉及。
约束与限制
1.本示例仅支持标准系统上运行, 支持设备:华为手机。
2.本示例为Stage模型,支持API21版本SDK,版本号:6.0.1.112。
3.本示例需要使用DevEco Studio 6.0.1 Release (Build Version: 6.0.1.251, built on November 22, 2025)及以上版本才可编译运行。
下载
如需单独下载本工程,执行如下命令:
git init
git config core.sparsecheckout true
echo ArkUISample/ScrollableComponent > .git/info/sparse-checkout
git remote add origin https://gitcode.com/harmonyos_samples/guide-snippets.git
git pull origin master


