HarmonyOS鸿蒙Next中下拉刷新自定义刷新view loading会露出一半距离

发布于 1周前 作者 htzhanglong 来自 鸿蒙OS

HarmonyOS鸿蒙Next中下拉刷新自定义刷新view loading会露出一半距离

// xxx.ets @Entry @Component struct RefreshExample { @State isRefreshing: boolean = false @State arr: String[] = [‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’, ‘10’] @State arr2: String[] = [‘0’, ‘1’]

@Builder customRefreshComponent() { Stack() { Row() { LoadingProgress().height(32) Text(“正在刷新…”).fontSize(16).margin({ left: 20 }) }.alignItems(VerticalAlign.Center) }.width(“100%”).align(Alignment.Center) }

build() { Column() { Refresh({ refreshing: $$this.isRefreshing, builder: this.customRefreshComponent() }) { Column() { Text(‘tttttt’).height(100) }.height(‘100%’) } .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(true) } } }


更多关于HarmonyOS鸿蒙Next中下拉刷新自定义刷新view loading会露出一半距离的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

需要去控制loading的显示于隐藏,示例代码如下

// xxx.ets
@Entry
@Component
struct RefreshPage {
  @State isRefreshing: boolean = false
  @State arr: String[] = ['0', '1']
  @State refreshString: string = '下拉刷新'
  @Builder
  customRefreshComponent()
  {
    Stack()
    {
      Row()
      {
        if (this.refreshString == '正在刷新...') {
          LoadingProgress().height(32)
        }
        Text("正在刷新...").fontSize(16).margin({left:20})
      }
      .alignItems(VerticalAlign.Center)
    }.width("100%").align(Alignment.Center)
  }
  build() {
    Column() {
      Refresh({ refreshing: $$this.isRefreshing, builder: this.customRefreshComponent()}) {
        Column(){
          Text('tttttt').height(100)
        }
        .height('100%')
      }
      .onStateChange((refreshStatus: RefreshStatus) => {
        if(refreshStatus == 1){
          this.refreshString = '下拉刷新'
        } else if (refreshStatus == 2){
          this.refreshString = '松手刷新'
        } else if (refreshStatus == 3){
          this.refreshString = '正在刷新...'
        } else if (refreshStatus == 4){
          //this.showToast('刷新成功')
          this.refreshString = '刷新成功'
        }
      })
      .onRefreshing(() => {
        setTimeout(() => {
          this.isRefreshing = false
          this.refreshString = '刷新成功'
        }, 2000)
        console.log('onRefreshing test')
      })
      .backgroundColor(0x89CFF0)
      .refreshOffset(64)
      .pullToRefresh(true)
    }
  }
}

更多关于HarmonyOS鸿蒙Next中下拉刷新自定义刷新view loading会露出一半距离的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,自定义下拉刷新时出现View Loading露出一半距离的情况,通常是由于刷新控件的高度或布局设置不当导致的。鸿蒙的下拉刷新控件RefreshContainerRefreshController允许开发者自定义刷新视图,但需要确保自定义视图的高度与RefreshContainer的布局参数匹配。

如果自定义刷新视图的高度超出了RefreshContainer的预期高度,可能会导致刷新视图在加载时露出一半。可以通过以下方式调整:

  1. 检查自定义视图的高度:确保自定义刷新视图的高度与RefreshContainer的布局参数一致,避免超出预期范围。

  2. 调整RefreshContainer的布局参数:在布局文件中,检查RefreshContainer的高度设置,确保其能够完整显示自定义刷新视图。

  3. 刷新动画的起始位置:自定义刷新视图时,注意刷新动画的起始位置,确保动画从正确的位置开始,避免出现视图露出一半的情况。

  4. 使用RefreshControllersetRefreshView方法:通过RefreshControllersetRefreshView方法设置自定义刷新视图时,确保视图的布局参数与RefreshContainer匹配。

如果以上调整仍无法解决问题,可能需要进一步检查自定义刷新视图的布局逻辑,确保其与RefreshContainer的布局机制兼容。

在HarmonyOS鸿蒙Next中,自定义下拉刷新视图时,如果发现视图在加载过程中露出一半距离,可以通过调整RefreshHeader的布局参数来解决。通常,设置RefreshHeader的高度为match_parent,并确保RefreshLayoutrefreshTriggerDistance属性值适当,以避免视图露出。此外,检查刷新动画的初始位置和结束位置,确保它们在视图中完全显示。如果问题依然存在,可以尝试使用setRefreshing(false)方法手动控制刷新状态,确保刷新视图完全隐藏。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!