List滚动条时长时短,求解决方案?

List滚动条时长时短 。

@Entry 
@Component 
struct ListExample { 
  private arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
  private arrItem: string[] = ["我是评论1", "我是评论2", "我是评论3", "我是评论4", 
    "我是评论5", "我是评论6"] 
  private arrItem2: string[] = ["我是评论1"] 
 
  @Builder 
  itemList(aa: number) { 
    List({ space: 20, initialIndex: 0 }) { 
      if (aa % 2 == 0) { 
        ForEach(this.arrItem, (item: string) => { 
          ListItem() { 
            Text('' + item) 
              .width('100%') 
              .height(50) 
              .fontSize(16) 
              .textAlign(TextAlign.Center) 
              .borderRadius(10) 
              .backgroundColor(0xFFFFFF) 
          } 
        }, (item: string) => item) 
      } else { 
        ForEach(this.arrItem2, (item: string) => { 
          ListItem() { 
            Text('' + item) 
              .width('100%') 
              .height(50) 
              .fontSize(16) 
              .textAlign(TextAlign.Center) 
              .borderRadius(10) 
              .backgroundColor(0xFFFFFF) 
          } 
        }, (item: string) => item) 
      } 
    } 
    .margin({ left: 20 }) 
    .listDirection(Axis.Vertical) 
    .scrollBar(BarState.Off) 
    .width('100%') 
  } 
 
  build() { 
    Column() { 
      List({ space: 20, initialIndex: 0 }) { 
        ForEach(this.arr, (item: number) => { 
          ListItem() { 
            Column({ space: 3 }) { 
              Text('' + item) 
                .width('100%') 
                .height(100) 
                .fontSize(16) 
                .textAlign(TextAlign.Center) 
                .borderRadius(10) 
                .backgroundColor(0xFFFFFF) 
              this.itemList(item) 
            } 
          } 
        }, (item: string) => item) 
      } 
      .listDirection(Axis.Vertical) 
      .scrollBar(BarState.On) 
      .friction(0.6) 
      .edgeEffect(EdgeEffect.Spring) 
      .width('90%') 
    } 
    .width('100%') 
    .height('100%') 
    .backgroundColor(0xDCDCDC) 
    .padding({ top: 5 }) 
  } 
}
HarmonyOS
2024-06-03 23:54:01
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
唯你而画

这个当前List对自身内容的总高度是根据当前在屏幕内出现的ListItem经过估算得到的,如果ListItem之间的高度不是相对等高的,那么随着ListItem的滑入滑出屏幕,List估算的内容总高度就会产生波动,而滚动条又是根据这个总高度来计算自身的高度的,所以就会体现成在List滑动过程中滚动条的高度一直在产生变化。这个是当前List的实现规格导致的。

规避方案:最外层List改成Scroll。Scroll的内容总高度计算在滑动过程中是稳定的,因此可以保证滚动条不会出现类似List的这种时长时短。

分享
微博
QQ
微信
回复
2024-06-04 22:44:06
相关问题
如何获取List组件滚动条滚动的距离
2414浏览 • 1回复 待解决
抓包应用,求解决方案
1753浏览 • 1回复 待解决
开发疑难问题如下,求解决方案
108浏览 • 1回复 待解决
请问ScrollView怎么显示滚动条
5442浏览 • 1回复 待解决
ListContainer 有滚动条 显示吗?
5562浏览 • 1回复 待解决
如何自定义滚动条的样式?
430浏览 • 1回复 待解决
HarmonyOS 如何隐藏Web组件的滚动条
367浏览 • 2回复 待解决
HarmonyOS代码封装解决方案
411浏览 • 1回复 待解决
高级图表实现解决方案
573浏览 • 1回复 待解决
确认网络状况解决方案
353浏览 • 1回复 待解决
HarmonyOS事件通信能力解决方案
688浏览 • 1回复 待解决
lazyforeach替换数据源解决方案
597浏览 • 1回复 待解决
HarmonyOS C++模块引用解决方案
341浏览 • 1回复 待解决
HarmonyOS有访问相册有解决方案
263浏览 • 1回复 待解决