锚点可以使用scroll组件的scrollTo接口来实现,参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-container-scroll-V5\#scrollto里边两个参数:xOffset、yOffset分别表示向x轴和y轴滚动,如果list是动态增加的,也是以使用onAreaChange接口来动态获取变化的x轴以及y轴的数据,参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-universal-component-area-change-event-V5\#onareachange这边还可以再提供一个demo,供参考: // xxx.ets import { curves } from '@kit.ArkUI' @Entry @Component struct ScrollExample { scroller: Scroller = new Scroller() private arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] build() { Stack({ alignContent: Alignment.TopStart }) { Scroll(this.scroller) { Column() { ForEach(this.arr, (item: number) => { Text(item.toString()) .width('90%') .height(150) .backgroundColor(0xFFFFFF) .borderRadius(15) .fontSize(16) .textAlign(TextAlign.Center) .margin({ top: 10 }) }, (item: string) => item) }.width('100%') } .scrollable(ScrollDirection.Vertical) // 滚动方向纵向 .scrollBar(BarState.On) // 滚动条常驻显示 .scrollBarColor(Color.Gray) // 滚动条颜色 .scrollBarWidth(10) // 滚动条宽度 .friction(0.6) .edgeEffect(EdgeEffect.None) .onWillScroll((xOffset: number, yOffset: number, scrollState: ScrollState) => { console.info(xOffset + ' ' + yOffset) }) .onScrollEdge((side: Edge) => { console.info('To the edge') }) .onScrollStop(() => { console.info('Scroll Stop') }) Button('scroll 150') .height('5%') .onClick(() => { // 点击后下滑指定距离150.0vp this.scroller.scrollBy(0, 150) }) .margin({ top: 10, left: 20 }) Button('scroll 100') .height('5%') .onClick(() => { // 点击后滑动到指定位置,即下滑100.0vp的距离 const yOffset: number = this.scroller.currentOffset().yOffset; this.scroller.scrollTo({ xOffset: 0, yOffset: yOffset + 100 }) }) .margin({ top: 60, left: 20 }) Button('scroll 100') .height('5%') .onClick(() => { // 点击后滑动到指定位置,即下滑100.0vp的距离,滑动过程配置有动画 let curve = curves.interpolatingSpring(10, 1, 228, 30) //创建一个阶梯曲线 const yOffset: number = this.scroller.currentOffset().yOffset; this.scroller.scrollTo({ xOffset: 0, yOffset: yOffset + 100, animation: { duration: 1000, curve: curve } }) }) .margin({ top: 110, left: 20 }) Button('back top') .height('5%') .onClick(() => { // 点击后回到顶部 this.scroller.scrollEdge(Edge.Top) }) .margin({ top: 160, left: 20 }) Button('next page') .height('5%') .onClick(() => { // 点击后滑到下一页 this.scroller.scrollPage({ next: true }) }) .margin({ top: 210, left: 20 }) }.width('100%').height('100%').backgroundColor(0xDCDCDC) } }
锚点可以使用scroll组件的scrollTo接口来实现,参考链接:
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-container-scroll-V5\#scrollto
里边两个参数:xOffset、yOffset分别表示向x轴和y轴滚动,如果list是动态增加的,也是以使用onAreaChange接口来动态获取变化的x轴以及y轴的数据,参考链接:
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-universal-component-area-change-event-V5\#onareachange
这边还可以再提供一个demo,供参考: