HarmonyOS 如何获取列表list中,获取到每个item的left和宽度

希望获取到list列表中的每个item的坐标和宽度信息,该怎么获取?(ps:目前使用getInspectorByKey获取,但文档提示此接口仅用于对应用的测试。由于耗时长,不建议使用)

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

需要获取item坐标如果是为了实现item是否在屏幕显示范围可参考以下demo:

@Entry
@Component
struct ListDemoPage {
  scroller: Scroller = new Scroller()
  imgList: Resource[] = []
  @State endIndex: number = -1
  // 记录需要上报的item的index
  @State trackArr: number[] = []

  aboutToAppear(): void {
    for (let i = 0; i < 11; i++) {
      this.imgList.push($r('app.media.app_icon'))
    }
  }
  build() {
    Column() {
      List({ scroller: this.scroller,space: 10 }) {
        ForEach(this.imgList, (item: Resource, index: number) => {
          ListItem() {
            Image(item)
              .width(350)
              .height('100%')
              .objectFit(ImageFit.Contain)
              .borderRadius(4)
          }
          .height(200)
          .backgroundColor(Color.Gray)
          .onVisibleAreaChange([0.0, 1.0], (isVisible: boolean, currentRatio: number) => {
            if (isVisible && currentRatio >= 1.0) {
              if (this.trackArr.indexOf(index) === -1) {
                this.trackArr.push(index)
              }
            }
            if (!isVisible) {
              if (this.trackArr.indexOf(index) > -1) {
                this.trackArr.splice(this.trackArr.indexOf(index), 1)
              }
            }
          })
        }, (item: Resource) => JSON.stringify(item))
      }
      .onScrollIndex((first: number, end: number, center: number) => {
        this.endIndex = center
      })
      .onScrollStop(() => {
        console.log('result array ==> ' + JSON.stringify(this.trackArr))
      })
      .scrollBar(BarState.Off)
      .width('100%')
      .height('100%')
      .edgeEffect(EdgeEffect.None)
      .backgroundColor(Color.Transparent)
    }
    .width('100%')
    .height('100%')
  }
}

目前没有直接的方法去获取listItem的直接高度,你可以通过onDidScroll,当列表滑动时触发,返回当前帧滑动的偏移量,通过这个计算每一条的高度

参考链接:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-container-list-V5#ondidscroll12

分享
微博
QQ
微信
回复
15h前
相关问题
怎么获取List里面每个itemposition?
297浏览 • 1回复 待解决
有没有接口能获取到组件宽度
787浏览 • 1回复 待解决
如何获取文本显示宽度高度?
440浏览 • 1回复 待解决
HarmonyOSList如何加载item
244浏览 • 2回复 待解决
hvigro如何获取到buildMode
1988浏览 • 1回复 待解决
获取设备屏幕宽度高度
667浏览 • 1回复 待解决
HarmonyOS 如何获取组件宽度
459浏览 • 1回复 待解决
HarmonyOS 获取h5高度宽度
36浏览 • 1回复 待解决
如何获取当前设备宽度
726浏览 • 1回复 待解决
请问如何获取窗口宽度
1912浏览 • 1回复 待解决
如何获取当前组件宽度
309浏览 • 1回复 待解决