怎么监听Scroll的滑动百分比?
官方
鸿蒙小助手 2026-04-14 16:06:43 发布7803 浏览 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
标签
Scroll
onDidScroll
onWillScrol
相关推荐
HarmonyOS 5 相机与相册集成:从拍照到图片编辑的全链路实现
王争
115
0HarmonyOS防抖节流实战:搜索输入与按钮点击的频率控制
鸽芷咕
497
0ArkUI 组件复用与 @Builder 装饰器的高级用法实战
王争
278
0Segment:所见即所得的 Markdown 写作应用
深海的鲸同学 luvi
250
0HarmonyOS ArkUI埋点体系实战:构建数据驱动的基础
周正
635
0
鸿蒙小助手
致力于为鸿蒙开发者谋福利
1099
帖子
8
提问
13572
粉丝
最新发布
运维态高效处理应用冻屏
2026-07-08 16:26:40 发布【划重点】2026年HarmonyOS应用市场应用上架审核高频问题速通攻略
2026-07-06 18:52:46 发布热门推荐
京公网安备:11010502051901号