HarmonyOS鸿蒙Next中onMeasureSize替换onMeasure后,怎么定位子组件

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

HarmonyOS鸿蒙Next中onMeasureSize替换onMeasure后,怎么定位子组件

Custom component override this method to measure each of its sub components.

onMeasure?(children: Array<LayoutChild>, constraint: ConstraintSizeOptions): void;

从官方文档上看,和安卓同名的onMeasure方法已经被废弃,而替代方法onMeasureSize

/**
 * Custom component override this method to measure each of its sub components.
 - [@param](/user/param) { GeometryInfo } selfLayoutInfo
 - [@param](/user/param) { Array<Measurable> } children - indicate the measure child
 - [@param](/user/param) { ConstraintSizeOptions } constraint - indicate child constraint size
 - @returns { SizeResult }
 - [@syscap](/user/syscap) SystemCapability.ArkUI.ArkUI.Full
 - @crossplatform
 - @atomicservice
 - [@since](/user/since) 11
 */
onMeasureSize?(selfLayoutInfo: GeometryInfo, children: Array<Measurable>, constraint: ConstraintSizeOptions): SizeResult;

child作为Measurable功能非常有限,无法获取child组件本身的信息,例如uniqueId,name之类的。只在gitHub上找到一个commit

https://github.com/clipsheep6/interface_sdk-js/commit/3995b98a79a182cebe9a4bf21321fc625a22467f

但目前还是没有uniqueId或者name这种可以唯一标识子组件的方法,如果纯通过index,会有一些使用上的限制

附上最新文档地址,里面的demo也是通过foreach循环,实战上参考意义较少(5.0.3(15))

https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-custom-component-layout

想问下,现在要实现安卓中onMeasure和onLayout,有什么好的方式,特别是在onMeasure方法中可以对特定子组件识别,这样方便做特定子组件的measure和layout操作。


更多关于HarmonyOS鸿蒙Next中onMeasureSize替换onMeasure后,怎么定位子组件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在HarmonyOS鸿蒙Next中,onMeasureSize替换了onMeasure用于测量组件的大小。要定位子组件,可以使用onLayout方法。onLayout方法在组件布局时被调用,用于确定子组件的位置。在onLayout方法中,可以通过调用子组件的layout方法来设置其位置和大小。例如,child.layout(left, top, right, bottom)可以将子组件定位在指定的矩形区域内。lefttoprightbottom参数分别表示子组件相对于父组件的左边距、上边距、右边距和下边距。通过这种方式,可以在onLayout方法中精确控制子组件的位置。

更多关于HarmonyOS鸿蒙Next中onMeasureSize替换onMeasure后,怎么定位子组件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,onMeasureSize 替换了 onMeasure 后,定位子组件可以通过以下步骤实现:

  1. 获取子组件尺寸:在 onMeasureSize 中,使用 measureChild 方法测量子组件的尺寸。
  2. 计算布局位置:根据测量结果,计算子组件的布局位置。
  3. 设置布局位置:在 onLayout 方法中,使用 layout 方法设置子组件的具体位置。

通过这种方式,可以在 onMeasureSize 中完成子组件的测量,并在 onLayout 中进行精确定位。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!