怎么监听Scroll的滑动百分比? 官方
头像 鸿蒙小助手 2026-04-14 16:06:43    发布
7795 浏览 63 点赞 1 收藏

本问答帖原创发布在华为开发者联盟社区 ,欢迎开发者前往论坛提问交流。

更多与该问题相关的讨论,请点击原帖查看:

怎么监听Scroll的滑动百分比,想关联Progress进度条-华为开发者问答 | 华为开发者联盟 (huawei.com)

问题描述:

如何监听Scroll的滑动百分比?

解决方案:

【背景知识】

在HarmonyOS中,onWillScroll和onDidScroll是滚动容器组件(如Scroll)的两个关键事件回调接口。

onWillScroll在滚动行为即将发生前触发,属于滚动流程的前置回调,主要用于滚动行为的前置拦截(例如通过返回值控制是否允许滚动)。

onDidScroll在滚动行为完成一帧滑动后触发,属于滚动流程的后置回调,用于监听当前帧滑动的偏移量和当前滑动状态。

【解决方案】

使用onDidScroll或onWillScroll都可实现监听滚动,参考滚动监听。如下demo为使用onDidScroll监听滚动:

// Index.ets
@Entry
@Component
struct Index {
 @State message: string = 'Hello World';
 @State tabArray: Array<number> = [0, 1, 2, 3, 4]
 @State value: number = 0
 private scroller: Scroller = new Scroller()
 totalHeight: number = 0
 scrollHeight: number = 0
 aboutToAppear(): void {
 this.totalHeight = 200 * 5
 this.scrollHeight = 600
 }
 build() {
 Column() {
 Column() {
 Progress({ value: 0, total: this.totalHeight - this.scrollHeight, type: ProgressType.Linear })
 .color(Color.Blue)
 .value(this.value)
 .width(300)
 .height(20)
 }.height(100).alignItems(HorizontalAlign.Center).justifyContent(FlexAlign.Center)
 Scroll(this.scroller) {
 Column() {
 ForEach(this.tabArray, (item: number) => {
 ListItem() {
 Column() {
 Text("页签" + item + "_111111").fontSize(40)
 Text("页签" + item + "_222222").fontSize(40)
 Text("页签" + item + "_333333").fontSize(40)
 }.width("100%")
 .height(200)
 .backgroundColor(Color.Gray)
 }
 }, (item: string) => item)
 }.width("100%")
 }
 .scrollable(ScrollDirection.Vertical)
 .edgeEffect(EdgeEffect.None)
 .onDidScroll((xOffset: number, yOffset: number, scrollState: ScrollState) => {
 this.value += yOffset
 console.info("this.value = " + this.value)
 })
 .height(this.scrollHeight)
 }
 .height('100%')
 .width('100%')
 }
}


©本站发布的所有内容,包括但不限于文字、图片、音频、视频、图表、标志、标识、广告、商标、商号、域名、软件、程序等,除特别标明外,均来源于网络或用户投稿,版权归原作者或原出处所有。我们致力于保护原作者版权,若涉及版权问题,请及时联系我们进行处理。
分类
HarmonyOS
头像

鸿蒙小助手

致力于为鸿蒙开发者谋福利

1031

帖子

7

提问

13565

粉丝

关注
最新发布

MCP+Rules:AI辅助鸿蒙应用开发实践

2026-04-17 10:25:25    发布
热门推荐
地址:北京市朝阳区北三环东路三元桥曙光西里甲1号第三置业A座1508室 商务内容合作QQ:2291221 电话:13391790444或(010)62178877
版权所有:电脑商情信息服务集团 北京赢邦策略咨询有限责任公司
声明:本媒体部分图片、文章来源于网络,版权归原作者所有,我司致力于保护作者版权,如有侵权,请与我司联系删除

京ICP备:2022009079号-2

京公网安备:11010502051901号

ICP证:京B2-20230255