• Lv0
    粉丝0

积分11 / 贡献0

提问2答案被采纳0文章0

Navigation、Refresh、Scroll 联用时发现的问题 精华

natane 显示全部楼层 发表于 2024-2-26 17:11:44

联用Navigation Refresh Scroll中发现的问题

Navigation hideTitleBar属性为true条件下:

  1. Navigation 属性titleModeNavigationTitleMode.FreeNavigationTitleMode.Full 时 Refresh无法进行拖动下拉刷新,拖动下拉时会滚动条会抖动,快速下拉才会触发下拉刷新;
  2. Navigation 属性titleModeNavigationTitleMode.Mini 时 Refresh可下拉,但Scroll 只能向下滚动,无法向上滚动,向上滚动会直接触发Refresh下拉刷新,不会等到Scroll滚动条到最上方时才触发;

Navigation hideTitleBar属性为false条件下,不会出现以上情况

源码如下:

@Entry
@Component
struct Index {
  @State counter: number = 0
  @State isRefreshing: boolean = false
  @State mOffset: number = 0
  @State mFriction: number = 62
  private dataArray: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]

  @Builder
  refreshBuilder() {
    Column() {
      Text('刷新中')
        .fontSize(16)
    }
    .alignItems(HorizontalAlign.Center)
    .justifyContent(FlexAlign.Center)
    .padding(16)
    .borderRadius(12)
  }

  build() {
    Column() {
      Navigation() {
        Column() {
          Refresh({
            refreshing: $$this.isRefreshing,
            offset: this.mOffset,
            friction: this.mFriction,
            builder: this.refreshBuilder
          }) {
            Scroll() {
              Column() {
                ForEach(this.dataArray, (item: number) => {
                  Stack() {
                    Text((item + this.counter).toString())
                      .fontSize(20)
                  }.width('100%')
                  .height(60)
                  .backgroundColor(Color.White)
                  .borderRadius(10)
                })
              }.width('100%')
            }.width('100%')
            .height('100%')
          }
          .width('100%')
          .height('100%')
          .onRefreshing(() => {
            setTimeout(() => {
              this.counter++
              this.isRefreshing = false
            }, 1000)
          })
        }
        .height('100%')
        .width('100%')
      }
      .height('100%')
      .width('100%')
      .toolbarConfiguration([{ value: '测试' }])
      .hideTitleBar(true)
    }
    .height('100%')
    .width('100%')
  }
}
您尚未登录,无法参与评论,登录后可以:
参与开源共建问题交流
认同或收藏高质量问答
获取积分成为开源共建先驱

精彩评论4

深开鸿_王石

沙发 发表于 2024-2-27 10:54:34
其实能拉出来,但是和offset和fiction有关,给scroll加个.edgeEffect(EdgeEffect.Spring)会比较明显

natane

发表于 2024-2-27 17:13  IP属地: 北京市

回复 深开鸿_王石: 那这个拉的是scroll的吧,Refresh拉不出来

深开鸿_王石

发表于 2024-2-28 17:38  IP属地: - 中国江苏省 中国移动IDC

回复 natane: 我用4.0是能看到的,就是拉的距离较大

natane

发表于 2024-2-29 14:21  IP属地: 北京市

回复 深开鸿_王石: 同是4.0,安装后拉的话就只能拉动Scroll。Refresh只能快速下拉才能触发

【3 条回复】

Copyright   ©2023  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

返回顶部