# ArkUI_NativeNodeAPI_1 ## 概述 ArkUI提供的Native侧Node类型接口集合。Node模块相关接口需要在主线程上调用。 **起始版本:** 12 **相关模块:** [ArkUI_NativeModule](capi-arkui-nativemodule.md) **所在头文件:** [native_node.h](capi-native-node-h.md) ## 汇总 ### 成员变量 | 名称 | 描述 | | -- | -- | | int32_t version | 结构体版本。 | ### 成员函数 | 名称 | 描述 | | -- | -- | | [ArkUI_NodeHandle (\*createNode)(ArkUI_NodeType type)](#createnode) | 基于[ArkUI_NodeType](capi-native-node-h.md#arkui_nodetype)生成对应的组件并返回组件对象指针。 | | [void (\*disposeNode)(ArkUI_NodeHandle node)](#disposenode) | 销毁组件指针指向的组件对象。 | | [int32_t (\*addChild)(ArkUI_NodeHandle parent, ArkUI_NodeHandle child)](#addchild) | 将组件挂载到某个父节点之下。 | | [int32_t (\*removeChild)(ArkUI_NodeHandle parent, ArkUI_NodeHandle child)](#removechild) | 将组件从父节点中移除。 | | [int32_t (\*insertChildAfter)(ArkUI_NodeHandle parent, ArkUI_NodeHandle child, ArkUI_NodeHandle sibling)](#insertchildafter) | 将组件挂载到某个父节点之下,挂载位置在sibling节点之后。 | | [int32_t (\*insertChildBefore)(ArkUI_NodeHandle parent, ArkUI_NodeHandle child, ArkUI_NodeHandle sibling)](#insertchildbefore) | 将组件挂载到某个父节点之下,挂载位置在sibling节点之前。 | | [int32_t (\*insertChildAt)(ArkUI_NodeHandle parent, ArkUI_NodeHandle child, int32_t position)](#insertchildat) | 将组件挂载到某个父节点之下,挂载位置由position指定。 | | [int32_t (\*setAttribute)(ArkUI_NodeHandle node, ArkUI_NodeAttributeType attribute, const ArkUI_AttributeItem* item)](#setattribute) | 属性设置函数。 | | [const ArkUI_AttributeItem* (\*getAttribute)(ArkUI_NodeHandle node, ArkUI_NodeAttributeType attribute)](#getattribute) | 属性获取函数。该接口返回的指针是ArkUI框架内部的缓冲区指针,不需要开发者主动调用delete释放内存,但是需要在该函数下一次被调用前使用,否则可能会被其他值所覆盖。 | | [int32_t (\*resetAttribute)(ArkUI_NodeHandle node, ArkUI_NodeAttributeType attribute)](#resetattribute) | 重置属性函数。 | | [int32_t (\*registerNodeEvent)(ArkUI_NodeHandle node, ArkUI_NodeEventType eventType, int32_t targetId, void* userData)](#registernodeevent) | 注册节点事件函数。 | | [void (\*unregisterNodeEvent)(ArkUI_NodeHandle node, ArkUI_NodeEventType eventType)](#unregisternodeevent) | 反注册节点事件函数。 | | [void (\*registerNodeEventReceiver)(void (\*eventReceiver)(ArkUI_NodeEvent* event))](#registernodeeventreceiver) | 注册事件回调统一入口函数。ArkUI框架会统一收集过程中产生的组件事件并通过注册的eventReceiver函数回调给开发者。
重复调用时会覆盖前一次注册的函数。 避免直接保存ArkUI_NodeEvent对象指针,数据会在回调结束后销毁。
如果需要和组件实例绑定,可以使用addNodeEventReceiver函数接口。
| | [void (\*unregisterNodeEventReceiver)()](#unregisternodeeventreceiver) | 反注册事件回调统一入口函数。 | | [void (\*markDirty)(ArkUI_NodeHandle node, ArkUI_NodeDirtyFlag dirtyFlag)](#markdirty) | 强制标记当前节点需要重新测算,布局或者绘制。系统属性设置更新场景下ArkUI框架会自动标记脏区并重新执行测算,布局或者绘制,不需要开发者主动调用该函数。 | | [uint32_t (\*getTotalChildCount)(ArkUI_NodeHandle node)](#gettotalchildcount) | 获取子节点的个数。 | | [ArkUI_NodeHandle (\*getChildAt)(ArkUI_NodeHandle node, int32_t position)](#getchildat) | 获取子节点。 | | [ArkUI_NodeHandle (\*getFirstChild)(ArkUI_NodeHandle node)](#getfirstchild) | 获取第一个子节点。 | | [ArkUI_NodeHandle (\*getLastChild)(ArkUI_NodeHandle node)](#getlastchild) | 获取最后一个子节点。 | | [ArkUI_NodeHandle (\*getPreviousSibling)(ArkUI_NodeHandle node)](#getprevioussibling) | 获取上一个兄弟节点。 | | [ArkUI_NodeHandle (\*getNextSibling)(ArkUI_NodeHandle node)](#getnextsibling) | 获取下一个兄弟节点。 | | [int32_t (\*registerNodeCustomEvent)(ArkUI_NodeHandle node, ArkUI_NodeCustomEventType eventType, int32_t targetId, void* userData)](#registernodecustomevent) | 注册自定义节点事件函数。事件触发时通过registerNodeCustomEventReceiver注册的自定义事件入口函数返回。 | | [void (\*unregisterNodeCustomEvent)(ArkUI_NodeHandle node, ArkUI_NodeCustomEventType eventType)](#unregisternodecustomevent) | 反注册自定义节点事件函数。 | | [void (\*registerNodeCustomEventReceiver)(void (\*eventReceiver)(ArkUI_NodeCustomEvent* event))](#registernodecustomeventreceiver) | 注册自定义节点事件回调统一入口函数。ArkUI框架会统一收集过程中产生的自定义组件事件并通过注册的registerNodeCustomEventReceiver函数回调给开发者。
重复调用时会覆盖前一次注册的函数。
避免直接保存ArkUI_NodeCustomEvent对象指针,数据会在回调结束后销毁。
如果需要和组件实例绑定,可以使用addNodeCustomEventReceiver函数接口。
| | [void (\*unregisterNodeCustomEventReceiver)()](#unregisternodecustomeventreceiver) | 反注册自定义节点事件回调统一入口函数。 | | [int32_t (\*setMeasuredSize)(ArkUI_NodeHandle node, int32_t width, int32_t height)](#setmeasuredsize) | 在测算回调函数中设置组件的测算完成后的宽和高。 | | [int32_t (\*setLayoutPosition)(ArkUI_NodeHandle node, int32_t positionX, int32_t positionY)](#setlayoutposition) | 在布局回调函数中设置组件的位置。 | | [ArkUI_IntSize (\*getMeasuredSize)(ArkUI_NodeHandle node)](#getmeasuredsize) | 获取组件测算完成后的宽高尺寸。 | | [ArkUI_IntOffset (\*getLayoutPosition)(ArkUI_NodeHandle node)](#getlayoutposition) | 获取组件布局完成后的位置。 | | [int32_t (\*measureNode)(ArkUI_NodeHandle node, ArkUI_LayoutConstraint* Constraint)](#measurenode) | 对特定组件进行测算,可以通过getMeasuredSize接口获取测算后的大小。 | | [int32_t (\*layoutNode)(ArkUI_NodeHandle node, int32_t positionX, int32_t positionY)](#layoutnode) | 对特定组件进行布局并传递该组件相对父组件的期望位置。 | | [int32_t (\*addNodeEventReceiver)(ArkUI_NodeHandle node, void (\*eventReceiver)(ArkUI_NodeEvent* event))](#addnodeeventreceiver) | 在组件上添加组件事件回调函数,用于接受该组件产生的组件事件。不同于registerNodeEventReceiver的全局注册函数,该函数允许在同一个组件上添加多个事件接受器。
该函数添加的监听回调函数触发时机会先与registerNodeEventReceiver注册的全局回调函数。
避免直接保存ArkUI_NodeEvent对象指针,数据会在回调结束后销毁。
| | [int32_t (\*removeNodeEventReceiver)(ArkUI_NodeHandle node, void (\*eventReceiver)(ArkUI_NodeEvent* event))](#removenodeeventreceiver) | 在组件上删除注册的组件事件回调函数。 | | [int32_t (\*addNodeCustomEventReceiver)(ArkUI_NodeHandle node, void (\*eventReceiver)(ArkUI_NodeCustomEvent* event))](#addnodecustomeventreceiver) | 在组件上添加自定义事件回调函数,用于接受该组件产生的自定义事件(如布局事件,绘制事件)。不同于registerNodeCustomEventReceiver的全局注册函数,该函数允许在同一个组件上添加多个事件接受器。
该函数添加的监听回调函数触发时机会先与registerNodeCustomEventReceiver注册的全局回调函数。
避免直接保存ArkUI_NodeCustomEvent对象指针,数据会在回调结束后销毁。
| | [int32_t (\*removeNodeCustomEventReceiver)(ArkUI_NodeHandle node, void (\*eventReceiver)(ArkUI_NodeCustomEvent* event))](#removenodecustomeventreceiver) | 在组件上删除注册的自定义事件回调函数。 | | [int32_t (\*setUserData)(ArkUI_NodeHandle node, void* userData)](#setuserdata) | 在组件上保存自定义数据。 | | [void* (\*getUserData)(ArkUI_NodeHandle node)](#getuserdata) | 获取在组件上保存的自定义数据。 | | [int32_t (\*setLengthMetricUnit)(ArkUI_NodeHandle node, ArkUI_LengthMetricUnit unit)](#setlengthmetricunit) | 指定组件的单位。 | | [ArkUI_NodeHandle (\*getParent)(ArkUI_NodeHandle node)](#getparent) | 获取父节点。 | | [int32_t (\*removeAllChildren)(ArkUI_NodeHandle parent)](#removeallchildren) | 从父组件上卸载所有子节点。 | ## 成员函数说明 ### createNode() ``` ArkUI_NodeHandle (*createNode)(ArkUI_NodeType type) ``` **描述:** 基于[ArkUI_NodeType](capi-native-node-h.md#arkui_nodetype)生成对应的组件并返回组件对象指针。 **参数:** | 参数项 | 描述 | |-------------------------------------------------------------| -- | | [ArkUI_NodeType](capi-native-node-h.md#arkui_nodetype) type | 创建指定类型的UI组件节点。 | **返回:** | 类型 | 说明 | | -- | -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) | 返回创建完成的组件操作指针,如果创建失败返回NULL。 | ### disposeNode() ``` void (*disposeNode)(ArkUI_NodeHandle node) ``` **描述:** 销毁组件指针指向的组件对象。 **参数:** | 参数项 | 描述 | | -- | -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 组件指针对象。 | ### addChild() ``` int32_t (*addChild)(ArkUI_NodeHandle parent, ArkUI_NodeHandle child) ``` **描述:** 将组件挂载到某个父节点之下。 **参数:** | 参数项 | 描述 | | -- | -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) parent | 父节点指针。 | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) child | 子节点指针。 | **返回:** | 类型 | 说明 | | -- |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | int32_t | 错误码。
[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。
[ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。
[ARKUI_ERROR_CODE_ARKTS_NODE_NOT_SUPPORTED](capi-native-type-h.md#arkui_errorcode) 禁止对BuilderNode生成的节点进行设置属性、重置属性、设置事件与新增或修改子节点操作。 | ### removeChild() ``` int32_t (*removeChild)(ArkUI_NodeHandle parent, ArkUI_NodeHandle child) ``` **描述:** 将组件从父节点中移除。 **参数:** | 参数项 | 描述 | | -- | -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) parent | 父节点指针。 | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) child | 子节点指针。 | **返回:** | 类型 | 说明 | | -- | -- | | int32_t | 错误码。
[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。
[ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。
[ARKUI_ERROR_CODE_ARKTS_NODE_NOT_SUPPORTED](capi-native-type-h.md#arkui_errorcode) 禁止对BuilderNode生成的节点进行设置属性、重置属性、设置事件与新增或修改子节点操作。
ERROR_CODE_NATIVE_IMPL_NODE_ADAPTER_EXIST NodeAdapter已经存在。 | ### insertChildAfter() ``` int32_t (*insertChildAfter)(ArkUI_NodeHandle parent, ArkUI_NodeHandle child, ArkUI_NodeHandle sibling) ``` **描述:** 将组件挂载到某个父节点之下,挂载位置在sibling节点之后。 **参数:** | 参数项 | 描述 | | -- | -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) parent | 父节点指针。 | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) child | 子节点指针。 | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) sibling | 前一个兄弟节点指针,如果为空则插入位置在最后面。 | **返回:** | 类型 | 说明 | | -- | -- | | int32_t | 错误码。
[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。
[ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。
[ARKUI_ERROR_CODE_ARKTS_NODE_NOT_SUPPORTED](capi-native-type-h.md#arkui_errorcode) 禁止对BuilderNode生成的节点进行设置属性、重置属性、设置事件与新增或修改子节点操作。 | ### insertChildBefore() ``` int32_t (*insertChildBefore)(ArkUI_NodeHandle parent, ArkUI_NodeHandle child, ArkUI_NodeHandle sibling) ``` **描述:** 将组件挂载到某个父节点之下,挂载位置在sibling节点之前。 **参数:** | 参数项 | 描述 | | -- | -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) parent | 父节点指针。 | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) child | 子节点指针。 | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) sibling | 后一个兄弟节点指针,如果为空则插入位置在最后面。 | **返回:** | 类型 | 说明 | | -- | -- | | int32_t | 错误码。
[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。
[ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。
[ARKUI_ERROR_CODE_ARKTS_NODE_NOT_SUPPORTED](capi-native-type-h.md#arkui_errorcode) 禁止对BuilderNode生成的节点进行设置属性、重置属性、设置事件与新增或修改子节点操作。
ERROR_CODE_NATIVE_IMPL_NODE_ADAPTER_EXIST NodeAdapter已经存在。 | ### insertChildAt() ``` int32_t (*insertChildAt)(ArkUI_NodeHandle parent, ArkUI_NodeHandle child, int32_t position) ``` **描述:** 将组件挂载到某个父节点之下,挂载位置由position指定。 **参数:** | 参数项 | 描述 | | -- | -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) parent | 父节点指针。 | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) child | 子节点指针。 | | int32_t position | 插入位置,如果插入位置为负数或者不存在,则默认插入位置在最后面。 | **返回:** | 类型 | 说明 | | -- | -- | | int32_t | 错误码。
[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。
[ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。
[ARKUI_ERROR_CODE_ARKTS_NODE_NOT_SUPPORTED](capi-native-type-h.md#arkui_errorcode) 禁止对BuilderNode生成的节点进行设置属性、重置属性、设置事件与新增或修改子节点操作。
ERROR_CODE_NATIVE_IMPL_NODE_ADAPTER_EXIST NodeAdapter已经存在。 | ### setAttribute() ``` int32_t (*setAttribute)(ArkUI_NodeHandle node, ArkUI_NodeAttributeType attribute, const ArkUI_AttributeItem* item) ``` **描述:** 属性设置函数。 **参数:** | 参数项 | 描述 | |------------------------------------------------------------------------------------| -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 需要设置属性的节点对象。 | | [ArkUI_NodeAttributeType](capi-native-node-h.md#arkui_nodeattributetype) attribute | 需要设置的属性类型。 | | const [ArkUI_AttributeItem](capi-arkui-nativemodule-arkui-attributeitem.md)* item | 需要设置的属性值。 | **返回:** | 类型 | 说明 | | -- | -- | | int32_t | 错误码。
[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。
[ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。
[ARKUI_ERROR_CODE_ATTRIBUTE_OR_EVENT_NOT_SUPPORTED](capi-native-type-h.md#arkui_errorcode) 系统中未找到Native接口的动态实现库。
[ARKUI_ERROR_CODE_ARKTS_NODE_NOT_SUPPORTED](capi-native-type-h.md#arkui_errorcode) 禁止对BuilderNode生成的节点进行设置属性、重置属性、设置事件与新增或修改子节点操作。
ERROR_CODE_NATIVE_IMPL_NODE_ADAPTER_EXIST NodeAdapter已经存在。 | ### getAttribute() ``` const ArkUI_AttributeItem* (*getAttribute)(ArkUI_NodeHandle node, ArkUI_NodeAttributeType attribute) ``` **描述:** 属性获取函数。该接口返回的指针是ArkUI框架内部的缓冲区指针,不需要开发者主动调用delete释放内存,但是需要在该函数下一次被调用前使用,否则可能会被其他值所覆盖。 **参数:** | 参数项 | 描述 | |------------------------------------------------------------------------------------| -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 需要获取属性的节点对象。 | | [ArkUI_NodeAttributeType](capi-native-node-h.md#arkui_nodeattributetype) attribute | 需要获取的属性类型。 | **返回:** | 类型 | 说明 | | -- | -- | | const ArkUI_AttributeItem* | 当前属性类型的属性值,失败返回空指针。 | ### resetAttribute() ``` int32_t (*resetAttribute)(ArkUI_NodeHandle node, ArkUI_NodeAttributeType attribute) ``` **描述:** 重置属性函数。 **参数:** | 参数项 | 描述 | | -- | -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 需要重置属性的节点对象。 | | [ArkUI_NodeAttributeType](capi-native-node-h.md#arkui_nodeattributetype) attribute | 需要重置的属性类型。 | **返回:** | 类型 | 说明 | | -- | -- | | int32_t | 错误码。
[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。
[ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。
[ARKUI_ERROR_CODE_ATTRIBUTE_OR_EVENT_NOT_SUPPORTED](capi-native-type-h.md#arkui_errorcode) 系统中未找到Native接口的动态实现库。
[ARKUI_ERROR_CODE_ARKTS_NODE_NOT_SUPPORTED](capi-native-type-h.md#arkui_errorcode) 禁止对BuilderNode生成的节点进行设置属性、重置属性、设置事件与新增或修改子节点操作。 | ### registerNodeEvent() ``` int32_t (*registerNodeEvent)(ArkUI_NodeHandle node, ArkUI_NodeEventType eventType, int32_t targetId, void* userData) ``` **描述:** 注册节点事件函数。 **参数:** | 参数项 | 描述 | |----------------------------------------------------------------------------|-----------------------------------------------------------------------------------------| | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 需要注册事件的节点对象。 | | [ArkUI_NodeEventType](capi-native-node-h.md#arkui_nodeeventtype) eventType | 需要注册的事件类型。 | | int32_t targetId | 自定义事件ID,当事件触发时在回调参数[ArkUI_NodeEvent](capi-arkui-nativemodule-arkui-nodeevent.md) 中携带回来。 | | void* userData | 自定义事件参数,当事件触发时在回调参数[ArkUI_NodeEvent](capi-arkui-nativemodule-arkui-nodeevent.md) 中携带回来。 | **返回:** | 类型 | 说明 | | -- | -- | | int32_t | 错误码。
[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。
[ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。
[ARKUI_ERROR_CODE_ATTRIBUTE_OR_EVENT_NOT_SUPPORTED](capi-native-type-h.md#arkui_errorcode) 系统中未找到Native接口的动态实现库。
[ARKUI_ERROR_CODE_ARKTS_NODE_NOT_SUPPORTED](capi-native-type-h.md#arkui_errorcode) 禁止对BuilderNode生成的节点进行设置属性、重置属性、设置事件与新增或修改子节点操作。 | ### unregisterNodeEvent() ``` void (*unregisterNodeEvent)(ArkUI_NodeHandle node, ArkUI_NodeEventType eventType) ``` **描述:** 反注册节点事件函数。 **参数:** | 参数项 | 描述 | |------------------------------------------------------------------|---------------| | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 需要反注册事件的节点对象。 | | [ArkUI_NodeEventType](capi-native-node-h.md#arkui_nodeeventtype) eventType | 需要反注册的事件类型。 | ### registerNodeEventReceiver() ``` void (*registerNodeEventReceiver)(void (*eventReceiver)(ArkUI_NodeEvent* event)) ``` **描述:** 注册事件回调统一入口函数。ArkUI框架会统一收集过程中产生的组件事件并通过注册的eventReceiver函数回调给开发者。
重复调用时会覆盖前一次注册的函数。 避免直接保存ArkUI_NodeEvent对象指针,数据会在回调结束后销毁。
如果需要和组件实例绑定,可以使用addNodeEventReceiver函数接口。
| 参数项 | 描述 | |-----|----| | eventReceiver | 事件回调统一入口函数。 | ### unregisterNodeEventReceiver() ``` void (*unregisterNodeEventReceiver)() ``` **描述:** 反注册事件回调统一入口函数。 ### markDirty() ``` void (*markDirty)(ArkUI_NodeHandle node, ArkUI_NodeDirtyFlag dirtyFlag) ``` **描述:** 强制标记当前节点需要重新测算,布局或者绘制。系统属性设置更新场景下ArkUI框架会自动标记脏区并重新执行测算,布局或者绘制,不需要开发者主动调用该函数。 **参数:** | 参数项 | 描述 | |----------------------------------------------------------------------------|--------------| | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 需要标记脏区的节点对象。 | | [ArkUI_NodeDirtyFlag](capi-native-node-h.md#arkui_nodedirtyflag) dirtyFlag | 脏区类型。 | ### getTotalChildCount() ``` uint32_t (*getTotalChildCount)(ArkUI_NodeHandle node) ``` **描述:** 获取子节点的个数。 **参数:** | 参数项 | 描述 | | -- | -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 目标节点对象。 | **返回:** | 类型 | 说明 | | -- | -- | | uint32_t | 子节点的个数, 如果没有返回0。 | ### getChildAt() ``` ArkUI_NodeHandle (*getChildAt)(ArkUI_NodeHandle node, int32_t position) ``` **描述:** 获取子节点。 **参数:** | 参数项 | 描述 | | -- | -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 目标节点对象。 | | int32_t position | 子组件的位置。 | **返回:** | 类型 | 说明 | | -- | -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) | 返回组件的指针,如果没有返回NULL。 | ### getFirstChild() ``` ArkUI_NodeHandle (*getFirstChild)(ArkUI_NodeHandle node) ``` **描述:** 获取第一个子节点。 **参数:** | 参数项 | 描述 | | -- | -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 目标节点对象。 | **返回:** | 类型 | 说明 | | -- | -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) | 返回组件的指针,如果没有返回NULL。 | ### getLastChild() ``` ArkUI_NodeHandle (*getLastChild)(ArkUI_NodeHandle node) ``` **描述:** 获取最后一个子节点。 **参数:** | 参数项 | 描述 | | -- | -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 目标节点对象。 | **返回:** | 类型 | 说明 | | -- | -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) | 返回组件的指针,如果没有返回NULL。 | ### getPreviousSibling() ``` ArkUI_NodeHandle (*getPreviousSibling)(ArkUI_NodeHandle node) ``` **描述:** 获取上一个兄弟节点。 **参数:** | 参数项 | 描述 | | -- | -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 目标节点对象。 | **返回:** | 类型 | 说明 | | -- | -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) | 返回组件的指针,如果没有返回NULL。 | ### getNextSibling() ``` ArkUI_NodeHandle (*getNextSibling)(ArkUI_NodeHandle node) ``` **描述:** 获取下一个兄弟节点。 **参数:** | 参数项 | 描述 | | -- | -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 目标节点对象。 | **返回:** | 类型 | 说明 | | -- | -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) | 返回组件的指针,如果没有返回NULL。 | ### registerNodeCustomEvent() ``` int32_t (*registerNodeCustomEvent)(ArkUI_NodeHandle node, ArkUI_NodeCustomEventType eventType, int32_t targetId, void* userData) ``` **描述:** 注册自定义节点事件函数。事件触发时通过registerNodeCustomEventReceiver注册的自定义事件入口函数返回。 **参数:** | 参数项 | 描述 | |----------------------------------------------------------------------------------------| -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 需要注册事件的节点对象。 | | [ArkUI_NodeCustomEventType](capi-native-node-h.md#arkui_nodecustomeventtype) eventType | 需要注册的事件类型。 | | int32_t targetId | 自定义事件ID,当事件触发时在回调参数[ArkUI_NodeCustomEvent](capi-arkui-nativemodule-arkui-nodecustomevent.md) 中携带回来。 | | void* userData | 自定义事件参数,当事件触发时在回调参数[ArkUI_NodeCustomEvent](capi-arkui-nativemodule-arkui-nodecustomevent.md) 中携带回来。 | **返回:** | 类型 | 说明 | | -- | -- | | int32_t | 错误码。
[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。
[ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。
[ARKUI_ERROR_CODE_ATTRIBUTE_OR_EVENT_NOT_SUPPORTED](capi-native-type-h.md#arkui_errorcode) 系统中未找到Native接口的动态实现库。 | ### unregisterNodeCustomEvent() ``` void (*unregisterNodeCustomEvent)(ArkUI_NodeHandle node, ArkUI_NodeCustomEventType eventType) ``` **描述:** 反注册自定义节点事件函数。 **参数:** | 参数项 | 描述 | |----------------------------------------------------------------------------------------|---------------| | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 需要反注册事件的节点对象。 | | [ArkUI_NodeCustomEventType](capi-native-node-h.md#arkui_nodecustomeventtype) eventType | 需要反注册的事件类型。 | ### registerNodeCustomEventReceiver() ``` void (*registerNodeCustomEventReceiver)(void (*eventReceiver)(ArkUI_NodeCustomEvent* event)) ``` **描述:** 注册自定义节点事件回调统一入口函数。ArkUI框架会统一收集过程中产生的自定义组件事件并通过注册的registerNodeCustomEventReceiver函数回调给开发者。
重复调用时会覆盖前一次注册的函数。
避免直接保存ArkUI_NodeCustomEvent对象指针,数据会在回调结束后销毁。
如果需要和组件实例绑定,可以使用addNodeCustomEventReceiver函数接口。
| 参数项 | 描述 | |-----|----| | eventReceiver | 事件回调统一入口函数。 | ### unregisterNodeCustomEventReceiver() ``` void (*unregisterNodeCustomEventReceiver)() ``` **描述:** 反注册自定义节点事件回调统一入口函数。 ### setMeasuredSize() ``` int32_t (*setMeasuredSize)(ArkUI_NodeHandle node, int32_t width, int32_t height) ``` **描述:** 在测算回调函数中设置组件的测算完成后的宽和高。 **参数:** | 参数项 | 描述 | | -- | -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 目标节点对象。 | | int32_t width | 设置的宽。 | | int32_t height | 设置的高。 | **返回:** | 类型 | 说明 | | -- | -- | | int32_t | 错误码。
[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。
[ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。 | ### setLayoutPosition() ``` int32_t (*setLayoutPosition)(ArkUI_NodeHandle node, int32_t positionX, int32_t positionY) ``` **描述:** 在布局回调函数中设置组件的位置。该接口优先级低于NODE_POSITION。 **参数:** | 参数项 | 描述 | | -- | -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 目标节点对象。 | | int32_t positionX | x轴坐标。 | | int32_t positionY | y轴坐标。 | **返回:** | 类型 | 说明 | | -- | -- | | int32_t | 错误码。
[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。
[ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。 | ### getMeasuredSize() ``` ArkUI_IntSize (*getMeasuredSize)(ArkUI_NodeHandle node) ``` **描述:** 获取组件测算完成后的宽高尺寸。 **参数:** | 参数项 | 描述 | | -- | -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 目标节点对象。 | **返回:** | 类型 | 说明 | |-------------------| -- | | [ArkUI_IntSize](capi-arkui-nativemodule-arkui-intsize.md) | ArkUI_IntSize 组件的宽高。 | ### getLayoutPosition() ``` ArkUI_IntOffset (*getLayoutPosition)(ArkUI_NodeHandle node) ``` **描述:** 获取组件布局完成后的位置。 **参数:** | 参数项 | 描述 | | -- | -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 目标节点对象。 | **返回:** | 类型 | 说明 | |---------------------| -- | | [ArkUI_IntOffset](capi-arkui-nativemodule-arkui-intoffset.md) | ArkUI_IntOffset 组件的位置。 | ### measureNode() ``` int32_t (*measureNode)(ArkUI_NodeHandle node, ArkUI_LayoutConstraint* Constraint) ``` **描述:** 对特定组件进行测算,可以通过getMeasuredSize接口获取测算后的大小。 **参数:** | 参数项 | 描述 | |------------------------------------------------------------------| -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 目标节点对象。 | | [ArkUI_LayoutConstraint](capi-arkui-nativemodule-arkui-layoutconstraint.md)* Constraint | 约束尺寸。 | **返回:** | 类型 | 说明 | | -- | -- | | int32_t | 错误码。
[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。
[ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。 | ### layoutNode() ``` int32_t (*layoutNode)(ArkUI_NodeHandle node, int32_t positionX, int32_t positionY) ``` **描述:** 对特定组件进行布局并传递该组件相对父组件的期望位置。 **参数:** | 参数项 | 描述 | | -- | -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 目标节点对象。 | | int32_t positionX | x轴坐标。 | | int32_t positionY | y轴坐标。 | **返回:** | 类型 | 说明 | | -- | -- | | int32_t | 错误码。
[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。
[ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。 | ### addNodeEventReceiver() ``` int32_t (*addNodeEventReceiver)(ArkUI_NodeHandle node, void (*eventReceiver)(ArkUI_NodeEvent* event)) ``` **描述:** 在组件上添加组件事件回调函数,用于接受该组件产生的组件事件。不同于registerNodeEventReceiver的全局注册函数,该函数允许在同一个组件上添加多个事件接受器。
该函数添加的监听回调函数触发时机会先与registerNodeEventReceiver注册的全局回调函数。
避免直接保存ArkUI_NodeEvent对象指针,数据会在回调结束后销毁。
**参数:** | 参数项 | 描述 | |------------------------------------------------------------------| -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 用于添加组件事件回调函数的对象。 | | eventReceiver | 组件事件回调函数。 | **返回:** | 类型 | 说明 | | -- | -- | | int32_t | 错误码。
[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。
[ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。 | ### removeNodeEventReceiver() ``` int32_t (*removeNodeEventReceiver)(ArkUI_NodeHandle node, void (*eventReceiver)(ArkUI_NodeEvent* event)) ``` **描述:** 在组件上删除注册的组件事件回调函数。 **参数:** | 参数项 | 描述 | |------------------------------------------------------------------| -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 用于删除组件事件回调函数的对象。 | | eventReceiver | 待删除的组件事件回调函数。 | **返回:** | 类型 | 说明 | | -- | -- | | int32_t | 错误码。
[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。
[ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。 | ### addNodeCustomEventReceiver() ``` int32_t (*addNodeCustomEventReceiver)(ArkUI_NodeHandle node, void (*eventReceiver)(ArkUI_NodeCustomEvent* event)) ``` **描述:** 在组件上添加自定义事件回调函数,用于接受该组件产生的自定义事件(如布局事件,绘制事件)。不同于registerNodeCustomEventReceiver的全局注册函数,该函数允许在同一个组件上添加多个事件接受器。
该函数添加的监听回调函数触发时机会先与registerNodeCustomEventReceiver注册的全局回调函数。
避免直接保存ArkUI_NodeCustomEvent对象指针,数据会在回调结束后销毁。
**参数:** | 参数项 | 描述 | |------------------------------------------------------------------| -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 用于添加组件自定义事件回调函数的对象。 | | eventReceiver | 组件自定义事件回调函数。 | **返回:** | 类型 | 说明 | | -- | -- | | int32_t | 错误码。
[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。
[ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。 | ### removeNodeCustomEventReceiver() ``` int32_t (*removeNodeCustomEventReceiver)(ArkUI_NodeHandle node, void (*eventReceiver)(ArkUI_NodeCustomEvent* event)) ``` **描述:** 在组件上删除注册的自定义事件回调函数。 **参数:** | 参数项 | 描述 | |------------------------------------------------------------------| -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 用于删除组件自定义事件回调函数的对象。 | | eventReceiver | 待删除的组件自定义事件回调函数。 | **返回:** | 类型 | 说明 | | -- | -- | | int32_t | 错误码。
[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。
[ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。 | ### setUserData() ``` int32_t (*setUserData)(ArkUI_NodeHandle node, void* userData) ``` **描述:** 在组件上保存自定义数据。 **参数:** | 参数项 | 描述 | | -- | -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 用于保存自定义数据的组件。 | | void* userData | 要保存的自定义数据。 | **返回:** | 类型 | 说明 | | -- | -- | | int32_t | 错误码。
[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。
[ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。 | ### getUserData() ``` void* (*getUserData)(ArkUI_NodeHandle node) ``` **描述:** 获取在组件上保存的自定义数据。 **参数:** | 参数项 | 描述 | | -- | -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 保存了自定义数据的组件。 | **返回:** | 类型 | 说明 | | -- | -- | | void* | 自定义数据。 | ### setLengthMetricUnit() ``` int32_t (*setLengthMetricUnit)(ArkUI_NodeHandle node, ArkUI_LengthMetricUnit unit) ``` **描述:** 指定组件的单位。 **参数:** | 参数项 | 描述 | |-----------------------------------------------------------------------------| -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 用于指定单位的组件。 | | [ArkUI_LengthMetricUnit](capi-native-type-h.md#arkui_lengthmetricunit) unit | 单位类型[ArkUI_LengthMetricUnit](capi-native-type-h.md#arkui_lengthmetricunit),默认为 ARKUI_LENGTH_METRIC_UNIT_DEFAULT。 | **返回:** | 类型 | 说明 | | -- | -- | | int32_t | 错误码。
[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。
[ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。 | ### getParent() ``` ArkUI_NodeHandle (*getParent)(ArkUI_NodeHandle node) ``` **描述:** 获取父节点。 **参数:** | 参数项 | 描述 | | -- | -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 目标节点对象。 | **返回:** | 类型 | 说明 | | -- | -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) | 返回组件的指针,如果没有返回NULL。 | ### removeAllChildren() ``` int32_t (*removeAllChildren)(ArkUI_NodeHandle parent) ``` **描述:** 从父组件上卸载所有子节点。 **起始版本:** 12 **参数:** | 参数项 | 描述 | | -- | -- | | [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) parent | 目标节点对象。 | **返回:** | 类型 | 说明 | | -- | -- | | int32_t | 错误码。
[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。
[ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。 |