HarmonyOS 鸿蒙Next List内容高度怎么获取

发布于 1周前 作者 eggper 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next List内容高度怎么获取

我现在要做长截图,包含List组件。我需要获取到List内容高度,然后计算截图和裁剪数据。

但是现在发现了一个问题,如果直接使用List,即便是在不设置height情况下,通过onAreaChange获取的高度也只有一屏幕的高度。除非我在List外面包裹一层Scroll,List组件不设置heightScroll设置height,这样onAreaChange的高度就是List内容的高度了。

问题:在不包裹Scroll的情况下(最好List也设置了height情况下),我如何能获取到List内容的高度呢?
 

Scroll(){
List(){
//…
}
.width(‘100%’)
.backgroundColor(Color.Gray)
.onAreaChange((oldValue: Area, newValue: Area)=>{
console.log( 'List onAreaChange: ’ + newValue.height)
})
}
.height(‘100%’)
.onAreaChange((oldValue: Area, newValue: Area)=>{
console.log( 'Scroll onAreaChange: ’ + newValue.height)
}) 

4 回复
老哥有解决这个问题吗,我想做平滑加载更多,在滚动到列表长度的一半时候就去请求接口,但也是拿不到列表的实际高度

这个获取组件的信息:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-inner-app-context-V5#contextgetabilityinfo7

这个获取组件相关参数:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-bundlemanager-abilityinfo-V5#windowsize

还有个就是给组件赋值ID再获取

.id('SelectList')
let jsonStr = getInspectorByKey('SelectList')
        let jsondata = JSON.parse(jsonStr)
        let attr = jsondata.$attrs
        let size = attr.size
        console.info('------>parent:'+size.width+'---'+size.height)<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

还是推荐怎么琢磨整整自适应布局

我记得有个方法可以获取,但是这样肥肠不推荐,性能不好嘞,我找找

在HarmonyOS鸿蒙Next中获取List内容的高度,可以通过以下方法实现:

  1. 使用组件区域变化事件:利用onAreaChange事件监听List组件的区域变化,该事件会在组件大小或位置发生变化时触发。通过回调函数中返回的Area对象,可以获取到List组件当前的宽度和高度。
  2. 确保List组件高度可变:在List组件的布局中,不要固定其高度,而是让其根据内容动态调整。这样,onAreaChange事件获取到的高度才会是List内容的真实高度。
  3. 考虑嵌套情况:如果List组件被嵌套在其他组件中(如Scroll),需要确保外层组件的高度设置不会限制List组件的高度变化。可以通过在外层组件上也使用onAreaChange事件来监控其高度变化,从而间接获取List内容的高度。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部