HarmonyOS Refresh控件,是否可以根据条件禁用/启用

问一下Refresh控件,可以根据条件禁用/启用吗?用 pullToRefresh(false)界面上还是会有显示?

HarmonyOS
17h前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Excelsior_abit

pullToRefresh(false) 这个属性设置为false的时候不会触发刷新的啊,属性设置成false,这个组件就不会触发onRefreshing刷新回调了,属性是生效的,如果不想要那个刷新的动画,可以使用自定义刷新组件,不想刷新的时候自定义刷新组件隐藏就可以了,参考demo:

@Entry
@Component
struct RefreshExample {
  @State isRefreshing: boolean = false
  @State arr: String[] = ['0', '1', '2', '3', '4','5','6','7','8','9','10']
  @Builder
  customRefreshComponent()
  {
    Stack()
    {
      Row()
      {
        LoadingProgress().height(32)
        Text("正在刷新...").fontSize(16).margin({left:20})
      }
      .alignItems(VerticalAlign.Center)
    }.width("100%").align(Alignment.Center).visibility(Visibility.Hidden)
  }
  build() {
    Column() {
      Refresh({ refreshing: $$this.isRefreshing,builder:this.customRefreshComponent()}) {
        List() {
          ForEach(this.arr, (item: string) => {
            ListItem() {
              Text('' + item)
                .width('100%').height(100).fontSize(16)
                .textAlign(TextAlign.Center).borderRadius(10).backgroundColor(0xFFFFFF)
            }
          }, (item: string) => item)
        }
        .onScrollIndex((first: number) => {
          console.info(first.toString())
        })
        .width('100%')
        .height('100%')
        .divider({strokeWidth:1,color:Color.Yellow,startMargin:10,endMargin:10})
        .scrollBar(BarState.Off)
      }
      .onStateChange((refreshStatus: RefreshStatus) => {
        console.info('Refresh onStatueChange state is ' + refreshStatus)
      })
      .onRefreshing(() => {
        /*setTimeout(() => {
        this.isRefreshing = false
        }, 2000)*/
        console.log('onRefreshing test')
      })
      .backgroundColor(0x89CFF0)
      .refreshOffset(64)
      .pullToRefresh(false)
    }
  }
}
分享
微博
QQ
微信
回复
16h前
相关问题
HarmonyOS Refresh禁用下拉
21浏览 • 1回复 待解决
HarmonyOS如何根据条件加载页面
362浏览 • 1回复 待解决
obd部署的时候,可以禁用ssh吗?
3563浏览 • 1回复 待解决
分布式是怎么启用的?
5239浏览 • 1回复 待解决