HarmonyOS 横向Scroll定位到最右侧

示例代码:

@Entry
@Component
struct ScrollPage {
  scroller: Scroller = new Scroller()
  @State selectTimeType:number = 0;

  build() {
    Scroll(this.scroller){
      Row(){
        Text("全部")
          .fontSize(14)
          .padding({ left: 10, right: 10, top: 5, bottom: 5 })
          .borderRadius(3)
          .onClick(() => {
            this.selectTimeType = 0
          })

        Text("最近一周")
          .fontSize(14)
          .padding({ left: 10, right: 10, top: 5, bottom: 5 })
          .borderRadius(3)
          .onClick(() => {
            this.selectTimeType = 1;
          })

        Text("最近30天")
          .fontSize(14)
          .padding({ left: 10, right: 10, top: 5, bottom: 5 })
          .borderRadius(3)
          .onClick(() => {
            this.selectTimeType = 2;
          })

        Text("最近半年")
          .fontSize(14)
          .padding({ left: 10, right: 10, top: 5, bottom: 5 })
          .borderRadius(3)
          .onClick(() => {
            this.selectTimeType = 3;
          })

        Text("自选时间")
          .fontSize(14)
          .padding({ left: 10, right: 10, top: 5, bottom: 5 })
          .borderRadius(3)
          .onClick(() => {
            this.selectTimeType = 4;
            this.scroller.scrollEdge(Edge.End)
          })

        Row(){
          Text("开始时间")
            .fontSize(12)
            .padding({ left: 10, right: 10, top: 5, bottom: 5 })
            .onClick(() => {

            })

          Divider()
            .strokeWidth(0.5)
            .width(7)
            .margin({left: 3, right: 3})

          Text("结束时间")
            .fontSize(12)
            .padding({ left: 10, right: 10, top: 5, bottom: 5 })
            .onClick(() => {

            })
        }
        .alignItems(VerticalAlign.Center)
        .margin({left: 15, right: 15})
        .visibility(this.selectTimeType === 4 ? Visibility.Visible : Visibility.None)
      }
      .margin({top: 10, bottom: 10, left: 20, right: 10})
    }
    .scrollBar(BarState.Off)
    .scrollable(ScrollDirection.Horizontal)
    .edgeEffect(EdgeEffect.None)
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
HarmonyOS
2024-12-24 16:22:26
905浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
FengTianYa

scroll内的初始子组件无法支撑scroll的滚动,导致在点击“自选时间”的时候,无法滚动到最右侧,此时scroll还没有滚动的效果。需要在隐藏的部分显示出来,并且支撑起scroll的滚动。this.scroller.scrollEdge(Edge.End) 才会生效。

修改后的部分代码如下:

Text("自选时间")
  .fontSize(14)
  .padding({
    left: 10,
    right: 10,
    top: 5,
    bottom: 5
  })
  .borderRadius(3)
  .onClick(() => {
    //解决隐藏的部分显示后,滑动到左边,再次点击“自选时间”无法滚动到最右侧的问题
    if (this.selectTimeType === 4) {
      this.scroller.scrollEdge(Edge.End)
    }
    this.selectTimeType = 4;
  })

if (this.selectTimeType === 4) {
  Row() {
    ... //初始隐藏的部分
  }
  .alignItems(VerticalAlign.Center)
  .margin({ left: 15, right: 15 })
  .onAttach(() => {
    console.log('more is show')
  })
  .onDetach(() => {
    console.log('more is hiden')
  })
  .onAppear(() => {
    console.log('组件挂载显示后触发此回调')
    this.scroller.scrollEdge(Edge.End)
  })
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
分享
微博
QQ
微信
回复
2024-12-24 19:12:55
相关问题
HarmonyOS Tabs和横向Scroll滑动冲突
821浏览 • 1回复 待解决
HarmonyOS Grid横向滑动
1164浏览 • 1回复 待解决
HarmonyOS 横向悬浮窗
706浏览 • 1回复 待解决
如何将容器定位屏幕的最底部
3365浏览 • 1回复 待解决
HarmonyOS 自动横向滚动List
762浏览 • 1回复 待解决
HarmonyOS 横向的菜单怎么实现
465浏览 • 1回复 待解决
HarmonyOS image图片纵向横向滑动
578浏览 • 1回复 待解决