HarmonyOS 用Scroller不能把List滑动到最底部?

项目中的聊天页,首次进入时,有超过1屏的消息,需要自动滑动到最后一条消息。

目前使用Scroller的两个方法,效果都达不到预期:都能滑动,但到不了最底部,总是差几条消息:

1、scrollToIndex,传入消息数-1

2、scrollEdge(Edge.Bottom)

HarmonyOS
2025-01-09 15:21:39
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
aquaa

scrollToIndex 不能传入-1,是无效值(value值设置成负值或者大于当前容器子组件的最大索引值,视为异常值,本次跳转不生效),具体参考文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-container-scroll-V5#scrolltoindex

参考案例:

@Entry
@Component
struct NestedScroll {
  @State arr: number[] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  private scrollerForScroll: Scroller = new Scroller()
  private scrollerForList: Scroller = new Scroller()

  build() {
    Flex() {
      Scroll(this.scrollerForScroll) {
        Column() {
          List({ space: 20, scroller: this.scrollerForList }) {
            ForEach(this.arr, (item: number) => {
              ListItem() {
                Text("ListItem" + item)
                  .width("100%")
                  .height("100%")
                  .borderRadius(15)
                  .fontSize(16)
                  .textAlign(TextAlign.Center)
                  .backgroundColor(Color.White)
              }

              .width("100%").height(100)
            }, (item: string) => item)
          }
          .width("100%")
          .height("100%")
          .edgeEffect(EdgeEffect.None)
          .friction(0.6)
        }
      }.onReachStart(()=>{
        // 传入列表长度来进行跳转到底部
        this.scrollerForList.scrollToIndex(this.arr.length-1)
      })
      .width("100%").height("100%")
    }.width('100%').height('100%').backgroundColor(0xDCDCDC).padding(20)
  }
}
分享
微博
QQ
微信
回复
2025-01-09 17:20:13
相关问题
HarmonyOS List组件默认滚动到底部
341浏览 • 1回复 待解决
监听pdf是否已经滑动到底部失败
1822浏览 • 1回复 待解决
list组件无法滚动到底部
1660浏览 • 1回复 待解决
HarmonyOS scroll嵌套List不能整体滑动
844浏览 • 1回复 待解决