HarmonyOS 鸿蒙Next ArkTs如何获取组件的宽高?

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

HarmonyOS 鸿蒙Next ArkTs如何获取组件的宽高?

ArkTs如何获取组件的宽高啊?有可参考资料吗?

8 回复

这个只能测试时用

注:ArkTS代码,API9下实测有效

使用组件通用事件onAreaChange()方法回调,在其中可获取组件的位置和尺寸数据,示例如下:

1、在页面文件中定义两个属性cw,ch代表组件宽、高,然后在相应组件后调用如下:

2、代码:(位置和 .onClick()同级),

.onAreaChange((oldValue: Area, newValue: Area) => {
this.cw = new Number(newValue.width).valueOf()
this.ch = new Number(newValue.height).valueOf()
})

另,因为newValue是Area类型变量,其中也可获取组件坐标 newValue.position.x 或 .y

这个只有在区域发生变化时才会触发,初始化时不会被触发

你试试,初始化时也有效的:) 实测 容器 Column,GridRow 及组件 Canvas 在初始化时都会执行onAreaChange(),从无到有也算是变化吧。。。

嗯,重启dev可以了,目前用的这方式

你现在知道了吗

在HarmonyOS鸿蒙Next ArkTS中,获取组件的宽高可以通过以下几种方式:

  1. 布局属性设置:在布局文件中,可以直接设置组件的宽高属性,并通过布局逻辑间接获取。
  2. 编程获取:在ArkTS中,可以利用组件的API或方法,在组件渲染完成后通过编程方式获取宽高。这通常涉及到监听组件的某个事件或回调,然后在回调函数中通过API获取宽高。
  3. 布局管理器:如果使用了布局管理器,如Flex、Grid等,组件的宽高可能会由布局管理器自动计算并分配,此时可以通过布局管理器的相关属性或方法来间接获取组件的宽高。

如果问题依旧没法解决,请加我微信,我的微信是itying888。

回到顶部