HarmonyOS鸿蒙Next中onMeasureSize替换onMeasure后,怎么定位子组件
HarmonyOS鸿蒙Next中onMeasureSize替换onMeasure后,怎么定位子组件
Custom component override this method to measure each of its sub components.
- @param { Array<LayoutChild> } children
- @param { ConstraintSizeOptions } constraint
- @syscap SystemCapability.ArkUI.ArkUI.Full
- @form
- @since 9
- @deprecated since 10
- @useinstead CustomComponent#onMeasureSize
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
在HarmonyOS鸿蒙Next中,onMeasureSize
替换了onMeasure
用于测量组件的大小。要定位子组件,可以使用onLayout
方法。onLayout
方法在组件布局时被调用,用于确定子组件的位置。在onLayout
方法中,可以通过调用子组件的layout
方法来设置其位置和大小。例如,child.layout(left, top, right, bottom)
可以将子组件定位在指定的矩形区域内。left
、top
、right
和bottom
参数分别表示子组件相对于父组件的左边距、上边距、右边距和下边距。通过这种方式,可以在onLayout
方法中精确控制子组件的位置。
更多关于HarmonyOS鸿蒙Next中onMeasureSize替换onMeasure后,怎么定位子组件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,onMeasureSize
替换了 onMeasure
后,定位子组件可以通过以下步骤实现:
- 获取子组件尺寸:在
onMeasureSize
中,使用measureChild
方法测量子组件的尺寸。 - 计算布局位置:根据测量结果,计算子组件的布局位置。
- 设置布局位置:在
onLayout
方法中,使用layout
方法设置子组件的具体位置。
通过这种方式,可以在 onMeasureSize
中完成子组件的测量,并在 onLayout
中进行精确定位。