当前位置: 首页 > news >正文

鸿蒙应用开发:Scroll 组件从入门到实战

文章目录

    • 一、引言
    • 二、Scroll 组件基础概念
      • 2.1 核心特性
    • 三、实战案例:垂直滚动列表
      • 3.1 示例代码
      • 3.2 代码解析
    • 四、核心属性详解
      • 4.1 滚动方向(scrollable)
      • 4.2 边缘滑动效果(edgeEffect)
    • 五、注意事项
      • 5.1 直接子元素只能有一个
      • 5.2 性能优化
    • 六、总结

这是一个使用鸿蒙技术开发的本地原生记账应用,非常适合大家用来练手。相关源码已上传至 Github,点击此处查看项目。欢迎大家交流、指正,也欢迎提交 PR。

一、引言

在鸿蒙应用开发中,当页面内容超出屏幕显示范围时,滚动功能是必不可少的。Scroll组件作为鸿蒙提供的基础滚动容器,能够轻松实现内容的滚动展示。本文将通过一个完整的实战案例,带你快速掌握Scroll组件的核心用法。

二、Scroll 组件基础概念

简单来说,Scroll组件是一个可滚动的容器组件。当它的子元素高度(或宽度)超过Scroll组件自身的大小时,滚动条就会出现,用户可以通过滑动来查看被隐藏的内容。

2.1 核心特性

  • 自动滚动:子元素超出容器范围时自动启用滚动。
  • 方向可控:支持垂直滚动和水平滚动。
  • 边缘效果:支持回弹效果,提升交互体验。
  • 单一子元素Scroll组件的直接子元素只能有一个。

三、实战案例:垂直滚动列表

下面我们通过一个具体的示例来演示Scroll组件的使用。在这个案例中,我们使用ForEach循环遍历一个数组,动态渲染多个高度为100vp的文本组件。

3.1 示例代码

@Entry@Componentstruct ScrollDemo{// 定义数据源privateitems:string[]=['Item 1','Item 2','Item 3','Item 4','Item 5','Item 6','Item 7','Item 8'];build(){Scroll(){Column(){// 通过 ForEach 遍历数组,渲染多个文本组件ForEach(this.items,(item:string)=>{Text(item).width('100%').height(100)// 每个文本组件高度为 100vp.backgroundColor('#FFD700').textAlign(TextAlign.Center).fontSize(20).margin({bottom:10})},(item:string)=>item)}.width('100%')}.scrollable(ScrollDirection.Vertical)// 设置滚动方向为垂直.edgeEffect(EdgeEffect.Spring)// 设置边缘回弹效果.width('100%').height('100%')}}

运行效果:

3.2 代码解析

  1. 数据源:定义了一个包含 8 个字符串的数组items,用于模拟列表数据。
  2. Scroll 容器:作为最外层的滚动容器,包裹Column组件。
  3. Column 布局:作为Scroll的唯一直接子元素,内部通过ForEach循环渲染文本组件。
  4. 文本组件:每个Text组件的高度被设置为100vp,并设置了背景色、文字对齐和字体大小。
  5. 滚动方向:通过.scrollable(ScrollDirection.Vertical)将滚动方向设置为垂直。
  6. 边缘效果:通过.edgeEffect(EdgeEffect.Spring)启用回弹效果。

四、核心属性详解

4.1 滚动方向(scrollable)

Scroll组件通过scrollable属性控制滚动方向,支持以下取值:

  • ScrollDirection.Vertical:垂直滚动(默认值)
  • ScrollDirection.Horizontal:水平滚动
  • ScrollDirection.None:禁止滚动
// 设置为水平滚动Scroll(){Row(){// 水平排列的子元素}}.scrollable(ScrollDirection.Horizontal)

4.2 边缘滑动效果(edgeEffect)

edgeEffect属性用于设置滚动到边缘时的反馈效果:

  • EdgeEffect.Spring:回弹效果(默认值),滚动到边缘时会有弹性回弹的动画。
  • EdgeEffect.None:无效果,滚动到边缘时直接停止,没有回弹动画。
// 去掉回弹效果Scroll(){// 子元素}.edgeEffect(EdgeEffect.None)

五、注意事项

5.1 直接子元素只能有一个

这是使用Scroll组件时最容易犯的错误。Scroll组件的直接子元素只能有一个。如果需要放置多个子组件,必须用一个容器组件(如ColumnRowFlex等)将它们包裹起来。

错误示例:

// ❌ 错误:Scroll 下有两个平行的子元素Scroll(){Text('第一个元素')Text('第二个元素')// 这里会报错}

正确示例:

// ✅ 正确:用一个 Column 包裹所有子元素Scroll(){Column(){Text('第一个元素')Text('第二个元素')}}

5.2 性能优化

当列表数据量较大时,建议使用LazyForEach替代ForEach,以实现按需加载,提升滚动性能。

六、总结

本文通过一个完整的实战案例,详细介绍了鸿蒙Scroll组件的使用方法。我们学习了:

  • Scroll组件的基本概念和核心特性
  • 如何通过ForEach遍历渲染高度为100vp的文本组件
  • 滚动方向、边缘效果等核心属性的配置
  • 使用Scroll组件时的注意事项

掌握了这些知识,你就可以在鸿蒙应用中灵活运用Scroll组件,构建流畅的滚动页面了。

http://www.jsqmd.com/news/1220672/

相关文章:

  • 哈尔滨甲醛检测怎么避坑?2026 多方比对除甲醛公司优劣,安心居环保本地实景口碑详解 - 专注室内空气检测治理
  • custom-device-emulation-chrome故障排除:常见问题与解决方案大全
  • 百达翡丽中国官方售后服务体系全解析|官方门店地址及客服电话全新公告(2026年7月最新) - 百达翡丽售后服务官网
  • Advanced Black-Box Tuning of Large Language Models with Limited API Calls
  • 边缘推理异常检测的自监督方案设计:利用模型中间层特征分布漂移实现无标签故障预警
  • static_status与GitHub Actions集成:自动生成状态页面的完整教程
  • mlx-community/gemma-4-e2b-it-mxfp8核心功能揭秘:图像描述、多模态交互与本地高效运行
  • 2026年企业即时通讯软件怎么选?16款IM产品全景对比 - IM软件测评
  • 用 AI 自动生成项目 README——扫描代码结构,输出专业文档
  • 鸿蒙开发实战:使用 List 组件构建新闻列表
  • K8s 高可用集群部署
  • 2026丽水市里卫生间漏水、阳台漏水、楼顶漏水、地下室渗水、阳光房漏水哪家防水公司做的好!核心靠谱公司推荐 - 吉林同城获客
  • 如何快速解密音乐文件:浏览器端音频解锁工具的终极指南
  • 【GLM-5终极评测报告】:20年NLP工程师亲测的5大颠覆性新功能与落地避坑指南
  • 伯爵中国官方售后服务中心|服务热线与详细地址权威信息通知(2026年7月最新) - 亨得利官方服务中心
  • PowerShellEditorServices社区贡献指南:如何参与这个开源项目
  • 分布式计算课程知识点总结
  • 官网发布 2026积家官方售后细则,保养收费表、维修周期、正规网点清单全公开 - 积家中国服务中心
  • 掌握xamarin-forms-book-samples导航系统:MasterDetail与TabbedPage实战
  • Flask-Login用户认证配置与安全实践指南
  • 如何去水印图片?有哪些手机电脑在线都能用的工具 - 科技热点发布
  • 黑苹果EFI配置终极简化:15分钟用OpCore-Simplify搞定OpenCore配置
  • 2026长沙家里卫生间漏水、阳台漏水、楼顶漏水、地下室渗水、阳光房漏水靠谱防水公司推荐 - 吉林同城获客
  • 鸿蒙应用开发实战:轻松实现列表上拉加载更多
  • 嵌入式代码 AddressSanitizer 集成实战:Cortex-M 上的堆栈溢出检测红区与 Shadow Memory 机制
  • 如何在macOS上高效制作Windows启动盘:WinDiskWriter完整实用指南
  • 权威靠谱!2026年7月卡地亚官方售后维修网点咨询电话,官方门店地址一览 - 卡地亚官方维修中心
  • 【独家首发】GLM-4-Flash vs GLM-4-Air性能横评:12项基准测试(MMLU、C-Eval、Gaokao-Bench)结果首度公开
  • AM64x/AM243x UART高级应用:IrDA与CIR模式配置实战指南
  • 中山街坊看过来!金价狂飙,闲置黄金别压箱底,这6家靠谱黄金回收点覆盖全城! - 新芸鼎珠宝首饰