HarmonyOS 鸿蒙Next listItem 怎么获取每条的高度,这样获取的高度不是按照顺序来的

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

HarmonyOS 鸿蒙Next listItem 怎么获取每条的高度,这样获取的高度不是按照顺序来的

listItem 怎么获取每条的高度,这样获取的高度不是按照顺序来的 懒加载好像是拿到下一页的高度

Swiper(this.swiperController!!) {
  LazyForEach(this.calendarDataSource, (item: CalendarModelList) => {
    Column() {
      //日期列表
      List() {
        ForEach(this.changeData(item), (item: CalendarModelList) => {
          ListItem() {
            CalendarListItem({ dateList: item })
          }.onAreaChange((oldValue: Area, newValue: Area) => {
            if (newValue.height as number != oldValue.height as number) {
              console.info("item高度" + (newValue.height as number))
            }
          })
        })
      }
    }
  })
}

更多关于HarmonyOS 鸿蒙Next listItem 怎么获取每条的高度,这样获取的高度不是按照顺序来的的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

可以通过onDidScroll,当列表滑动时触发,返回当前帧滑动的偏移量,通过这个计算每一条的高度

更多关于HarmonyOS 鸿蒙Next listItem 怎么获取每条的高度,这样获取的高度不是按照顺序来的的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS中,如果你正在使用列表组件(如ListContainer)并需要获取每个列表项(listItem)的高度,但发现获取的高度顺序不正确,这通常是由于视图布局和测量时机的问题。

在HarmonyOS中,视图的高度是在布局和测量阶段确定的。如果你直接在视图添加后立即获取高度,可能会因为布局还未完成而导致获取到错误或不完整的信息。正确的方式是使用布局完成后的回调来获取高度。

你可以尝试以下方法:

  1. 使用组件的onLayoutFinished回调:如果ListContainer或其中的Item组件提供了此类回调,你可以在布局完成后获取高度。

  2. 遍历子视图:在ListContainer布局完成后,遍历其子视图,通过getHeight()方法获取每个子视图(即listItem)的高度。确保这一操作在布局完全完成后进行。

  3. 使用自定义Layout:如果上述方法不适用,你可以考虑自定义Layout,重写其测量和布局方法,在合适的时机记录每个子视图的高度。

请确保你的获取高度操作是在UI线程中执行,并且是在布局完全稳定后进行。如果问题依旧没法解决请联系官网客服, 官网地址是 https://www.itying.com/category-93-b0.html

回到顶部