• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# ArkUI_NativeNodeAPI_1
2<!--Kit: ArkUI-->
3<!--Subsystem: ArkUI-->
4<!--Owner: @piggyguy; @xiang-shouxing; @yangfan229-->
5<!--Designer: @piggyguy; @xiang-shouxing; @yangfan229-->
6<!--Tester: @fredyuan912-->
7<!--Adviser: @HelloCrease-->
8
9## 概述
10
11ArkUI提供的Native侧Node类型接口集合。Node模块相关接口需要在主线程上调用。
12
13**起始版本:** 12
14
15**相关模块:** [ArkUI_NativeModule](capi-arkui-nativemodule.md)
16
17**所在头文件:** [native_node.h](capi-native-node-h.md)
18
19## 汇总
20
21### 成员变量
22
23| 名称 | 描述 |
24| -- | -- |
25| int32_t version | 结构体版本。 |
26
27
28### 成员函数
29
30| 名称 | 描述 |
31| -- | -- |
32| [ArkUI_NodeHandle (\*createNode)(ArkUI_NodeType type)](#createnode) | 基于[ArkUI_NodeType](capi-native-node-h.md#arkui_nodetype)生成对应的组件并返回组件对象指针。 |
33| [void (\*disposeNode)(ArkUI_NodeHandle node)](#disposenode) | 销毁组件指针指向的组件对象。 |
34| [int32_t (\*addChild)(ArkUI_NodeHandle parent, ArkUI_NodeHandle child)](#addchild) | 将组件挂载到某个父节点之下。 |
35| [int32_t (\*removeChild)(ArkUI_NodeHandle parent, ArkUI_NodeHandle child)](#removechild) | 将组件从父节点中移除。 |
36| [int32_t (\*insertChildAfter)(ArkUI_NodeHandle parent, ArkUI_NodeHandle child, ArkUI_NodeHandle sibling)](#insertchildafter) | 将组件挂载到某个父节点之下,挂载位置在<b>sibling</b>节点之后。 |
37| [int32_t (\*insertChildBefore)(ArkUI_NodeHandle parent, ArkUI_NodeHandle child, ArkUI_NodeHandle sibling)](#insertchildbefore) | 将组件挂载到某个父节点之下,挂载位置在<b>sibling</b>节点之前。 |
38| [int32_t (\*insertChildAt)(ArkUI_NodeHandle parent, ArkUI_NodeHandle child, int32_t position)](#insertchildat) | 将组件挂载到某个父节点之下,挂载位置由<b>position</b>指定。 |
39| [int32_t (\*setAttribute)(ArkUI_NodeHandle node, ArkUI_NodeAttributeType attribute, const ArkUI_AttributeItem* item)](#setattribute) | 属性设置函数。 |
40| [const ArkUI_AttributeItem* (\*getAttribute)(ArkUI_NodeHandle node, ArkUI_NodeAttributeType attribute)](#getattribute) | 属性获取函数。该接口返回的指针是ArkUI框架内部的缓冲区指针,不需要开发者主动调用delete释放内存,但是需要在该函数下一次被调用前使用,否则可能会被其他值所覆盖。 |
41| [int32_t (\*resetAttribute)(ArkUI_NodeHandle node, ArkUI_NodeAttributeType attribute)](#resetattribute) | 重置属性函数。 |
42| [int32_t (\*registerNodeEvent)(ArkUI_NodeHandle node, ArkUI_NodeEventType eventType, int32_t targetId, void* userData)](#registernodeevent) | 注册节点事件函数。 |
43| [void (\*unregisterNodeEvent)(ArkUI_NodeHandle node, ArkUI_NodeEventType eventType)](#unregisternodeevent) | 反注册节点事件函数。 |
44| [void (\*registerNodeEventReceiver)(void (\*eventReceiver)(ArkUI_NodeEvent* event))](#registernodeeventreceiver) | 注册事件回调统一入口函数。ArkUI框架会统一收集过程中产生的组件事件并通过注册的eventReceiver函数回调给开发者。<br> 重复调用时会覆盖前一次注册的函数。 避免直接保存ArkUI_NodeEvent对象指针,数据会在回调结束后销毁。<br> 如果需要和组件实例绑定,可以使用addNodeEventReceiver函数接口。<br> |
45| [void (\*unregisterNodeEventReceiver)()](#unregisternodeeventreceiver) | 反注册事件回调统一入口函数。 |
46| [void (\*markDirty)(ArkUI_NodeHandle node, ArkUI_NodeDirtyFlag dirtyFlag)](#markdirty) | 强制标记当前节点需要重新测算,布局或者绘制。系统属性设置更新场景下ArkUI框架会自动标记脏区并重新执行测算,布局或者绘制,不需要开发者主动调用该函数。 |
47| [uint32_t (\*getTotalChildCount)(ArkUI_NodeHandle node)](#gettotalchildcount) | 获取子节点的个数。 |
48| [ArkUI_NodeHandle (\*getChildAt)(ArkUI_NodeHandle node, int32_t position)](#getchildat) | 获取子节点。 |
49| [ArkUI_NodeHandle (\*getFirstChild)(ArkUI_NodeHandle node)](#getfirstchild) | 获取第一个子节点。 |
50| [ArkUI_NodeHandle (\*getLastChild)(ArkUI_NodeHandle node)](#getlastchild) | 获取最后一个子节点。 |
51| [ArkUI_NodeHandle (\*getPreviousSibling)(ArkUI_NodeHandle node)](#getprevioussibling) | 获取上一个兄弟节点。 |
52| [ArkUI_NodeHandle (\*getNextSibling)(ArkUI_NodeHandle node)](#getnextsibling) | 获取下一个兄弟节点。 |
53| [int32_t (\*registerNodeCustomEvent)(ArkUI_NodeHandle node, ArkUI_NodeCustomEventType eventType, int32_t targetId, void* userData)](#registernodecustomevent) | 注册自定义节点事件函数。事件触发时通过registerNodeCustomEventReceiver注册的自定义事件入口函数返回。 |
54| [void (\*unregisterNodeCustomEvent)(ArkUI_NodeHandle node, ArkUI_NodeCustomEventType eventType)](#unregisternodecustomevent) | 反注册自定义节点事件函数。 |
55| [void (\*registerNodeCustomEventReceiver)(void (\*eventReceiver)(ArkUI_NodeCustomEvent* event))](#registernodecustomeventreceiver) | 注册自定义节点事件回调统一入口函数。ArkUI框架会统一收集过程中产生的自定义组件事件并通过注册的registerNodeCustomEventReceiver函数回调给开发者。<br> 重复调用时会覆盖前一次注册的函数。<br> 避免直接保存ArkUI_NodeCustomEvent对象指针,数据会在回调结束后销毁。<br> 如果需要和组件实例绑定,可以使用addNodeCustomEventReceiver函数接口。<br> |
56| [void (\*unregisterNodeCustomEventReceiver)()](#unregisternodecustomeventreceiver) | 反注册自定义节点事件回调统一入口函数。 |
57| [int32_t (\*setMeasuredSize)(ArkUI_NodeHandle node, int32_t width, int32_t height)](#setmeasuredsize) | 在测算回调函数中设置组件的测算完成后的宽和高。 |
58| [int32_t (\*setLayoutPosition)(ArkUI_NodeHandle node, int32_t positionX, int32_t positionY)](#setlayoutposition) | 在布局回调函数中设置组件的位置。 |
59| [ArkUI_IntSize (\*getMeasuredSize)(ArkUI_NodeHandle node)](#getmeasuredsize) | 获取组件测算完成后的宽高尺寸。 |
60| [ArkUI_IntOffset (\*getLayoutPosition)(ArkUI_NodeHandle node)](#getlayoutposition) | 获取组件布局完成后的位置。 |
61| [int32_t (\*measureNode)(ArkUI_NodeHandle node, ArkUI_LayoutConstraint* Constraint)](#measurenode) | 对特定组件进行测算,可以通过getMeasuredSize接口获取测算后的大小。 |
62| [int32_t (\*layoutNode)(ArkUI_NodeHandle node, int32_t positionX, int32_t positionY)](#layoutnode) | 对特定组件进行布局并传递该组件相对父组件的期望位置。 |
63| [int32_t (\*addNodeEventReceiver)(ArkUI_NodeHandle node, void (\*eventReceiver)(ArkUI_NodeEvent* event))](#addnodeeventreceiver) | 在组件上添加组件事件回调函数,用于接受该组件产生的组件事件。不同于registerNodeEventReceiver的全局注册函数,该函数允许在同一个组件上添加多个事件接受器。<br> 该函数添加的监听回调函数触发时机会先与registerNodeEventReceiver注册的全局回调函数。<br> 避免直接保存ArkUI_NodeEvent对象指针,数据会在回调结束后销毁。<br> |
64| [int32_t (\*removeNodeEventReceiver)(ArkUI_NodeHandle node, void (\*eventReceiver)(ArkUI_NodeEvent* event))](#removenodeeventreceiver) | 在组件上删除注册的组件事件回调函数。 |
65| [int32_t (\*addNodeCustomEventReceiver)(ArkUI_NodeHandle node, void (\*eventReceiver)(ArkUI_NodeCustomEvent* event))](#addnodecustomeventreceiver) | 在组件上添加自定义事件回调函数,用于接受该组件产生的自定义事件(如布局事件,绘制事件)。不同于registerNodeCustomEventReceiver的全局注册函数,该函数允许在同一个组件上添加多个事件接受器。<br> 该函数添加的监听回调函数触发时机会先与registerNodeCustomEventReceiver注册的全局回调函数。<br> 避免直接保存ArkUI_NodeCustomEvent对象指针,数据会在回调结束后销毁。<br> |
66| [int32_t (\*removeNodeCustomEventReceiver)(ArkUI_NodeHandle node, void (\*eventReceiver)(ArkUI_NodeCustomEvent* event))](#removenodecustomeventreceiver) | 在组件上删除注册的自定义事件回调函数。 |
67| [int32_t (\*setUserData)(ArkUI_NodeHandle node, void* userData)](#setuserdata) | 在组件上保存自定义数据。 |
68| [void* (\*getUserData)(ArkUI_NodeHandle node)](#getuserdata) | 获取在组件上保存的自定义数据。 |
69| [int32_t (\*setLengthMetricUnit)(ArkUI_NodeHandle node, ArkUI_LengthMetricUnit unit)](#setlengthmetricunit) | 指定组件的单位。 |
70| [ArkUI_NodeHandle (\*getParent)(ArkUI_NodeHandle node)](#getparent) | 获取父节点。 |
71| [int32_t (\*removeAllChildren)(ArkUI_NodeHandle parent)](#removeallchildren) | 从父组件上卸载所有子节点。 |
72
73## 成员函数说明
74
75### createNode()
76
77```
78ArkUI_NodeHandle (*createNode)(ArkUI_NodeType type)
79```
80
81**描述:**
82
83
84基于[ArkUI_NodeType](capi-native-node-h.md#arkui_nodetype)生成对应的组件并返回组件对象指针。
85
86**参数:**
87
88| 参数项                                                         | 描述 |
89|-------------------------------------------------------------| -- |
90| [ArkUI_NodeType](capi-native-node-h.md#arkui_nodetype) type | 创建指定类型的UI组件节点。 |
91
92**返回:**
93
94| 类型 | 说明 |
95| -- | -- |
96| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) | 返回创建完成的组件操作指针,如果创建失败返回NULL。 |
97
98### disposeNode()
99
100```
101void (*disposeNode)(ArkUI_NodeHandle node)
102```
103
104**描述:**
105
106销毁组件指针指向的组件对象。
107
108**参数:**
109
110| 参数项 | 描述 |
111| -- | -- |
112| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 组件指针对象。 |
113
114### addChild()
115
116```
117int32_t (*addChild)(ArkUI_NodeHandle parent, ArkUI_NodeHandle child)
118```
119
120**描述:**
121
122
123将组件挂载到某个父节点之下。
124
125**参数:**
126
127| 参数项 | 描述 |
128| -- | -- |
129| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) parent | 父节点指针。 |
130|  [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) child | 子节点指针。 |
131
132**返回:**
133
134| 类型 | 说明                                                                                                                                                                                                                                                                                                                                     |
135| -- |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
136| int32_t | 错误码。<br>             [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>             [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。<br>             [ARKUI_ERROR_CODE_ARKTS_NODE_NOT_SUPPORTED](capi-native-type-h.md#arkui_errorcode) 禁止对BuilderNode生成的节点进行设置属性、重置属性、设置事件与新增或修改子节点操作。 |
137
138### removeChild()
139
140```
141int32_t (*removeChild)(ArkUI_NodeHandle parent, ArkUI_NodeHandle child)
142```
143
144**描述:**
145
146
147将组件从父节点中移除。
148
149**参数:**
150
151| 参数项 | 描述 |
152| -- | -- |
153| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) parent | 父节点指针。 |
154|  [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) child | 子节点指针。 |
155
156**返回:**
157
158| 类型 | 说明 |
159| -- | -- |
160| int32_t | 错误码。<br>             [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>             [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。<br>             [ARKUI_ERROR_CODE_ARKTS_NODE_NOT_SUPPORTED](capi-native-type-h.md#arkui_errorcode) 禁止对BuilderNode生成的节点进行设置属性、重置属性、设置事件与新增或修改子节点操作。<br>             ERROR_CODE_NATIVE_IMPL_NODE_ADAPTER_EXIST NodeAdapter已经存在。 |
161
162### insertChildAfter()
163
164```
165int32_t (*insertChildAfter)(ArkUI_NodeHandle parent, ArkUI_NodeHandle child, ArkUI_NodeHandle sibling)
166```
167
168**描述:**
169
170
171将组件挂载到某个父节点之下,挂载位置在<b>sibling</b>节点之后。
172
173**参数:**
174
175| 参数项 | 描述 |
176| -- | -- |
177| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) parent | 父节点指针。 |
178|  [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) child | 子节点指针。 |
179|  [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) sibling | 前一个兄弟节点指针,如果为空则插入位置在最后面。 |
180
181**返回:**
182
183| 类型 | 说明 |
184| -- | -- |
185| int32_t | 错误码。<br>             [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>             [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。<br>             [ARKUI_ERROR_CODE_ARKTS_NODE_NOT_SUPPORTED](capi-native-type-h.md#arkui_errorcode) 禁止对BuilderNode生成的节点进行设置属性、重置属性、设置事件与新增或修改子节点操作。 |
186
187### insertChildBefore()
188
189```
190int32_t (*insertChildBefore)(ArkUI_NodeHandle parent, ArkUI_NodeHandle child, ArkUI_NodeHandle sibling)
191```
192
193**描述:**
194
195
196将组件挂载到某个父节点之下,挂载位置在<b>sibling</b>节点之前。
197
198**参数:**
199
200| 参数项 | 描述 |
201| -- | -- |
202| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) parent | 父节点指针。 |
203|  [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) child | 子节点指针。 |
204|  [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) sibling | 后一个兄弟节点指针,如果为空则插入位置在最后面。 |
205
206**返回:**
207
208| 类型 | 说明 |
209| -- | -- |
210| int32_t | 错误码。<br>             [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>             [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。<br>             [ARKUI_ERROR_CODE_ARKTS_NODE_NOT_SUPPORTED](capi-native-type-h.md#arkui_errorcode) 禁止对BuilderNode生成的节点进行设置属性、重置属性、设置事件与新增或修改子节点操作。<br>             ERROR_CODE_NATIVE_IMPL_NODE_ADAPTER_EXIST NodeAdapter已经存在。 |
211
212### insertChildAt()
213
214```
215int32_t (*insertChildAt)(ArkUI_NodeHandle parent, ArkUI_NodeHandle child, int32_t position)
216```
217
218**描述:**
219
220
221将组件挂载到某个父节点之下,挂载位置由<b>position</b>指定。
222
223**参数:**
224
225| 参数项 | 描述 |
226| -- | -- |
227| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) parent | 父节点指针。 |
228|  [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) child | 子节点指针。 |
229| int32_t position | 插入位置,如果插入位置为负数或者不存在,则默认插入位置在最后面。 |
230
231**返回:**
232
233| 类型 | 说明 |
234| -- | -- |
235| int32_t | 错误码。<br>             [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>             [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。<br>             [ARKUI_ERROR_CODE_ARKTS_NODE_NOT_SUPPORTED](capi-native-type-h.md#arkui_errorcode) 禁止对BuilderNode生成的节点进行设置属性、重置属性、设置事件与新增或修改子节点操作。<br>             ERROR_CODE_NATIVE_IMPL_NODE_ADAPTER_EXIST NodeAdapter已经存在。 |
236
237### setAttribute()
238
239```
240int32_t (*setAttribute)(ArkUI_NodeHandle node, ArkUI_NodeAttributeType attribute, const ArkUI_AttributeItem* item)
241```
242
243**描述:**
244
245
246属性设置函数。
247
248**参数:**
249
250| 参数项                                                                                | 描述 |
251|------------------------------------------------------------------------------------| -- |
252| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node                   | 需要设置属性的节点对象。 |
253| [ArkUI_NodeAttributeType](capi-native-node-h.md#arkui_nodeattributetype) attribute | 需要设置的属性类型。 |
254| const [ArkUI_AttributeItem](capi-arkui-nativemodule-arkui-attributeitem.md)* item  | 需要设置的属性值。 |
255
256**返回:**
257
258| 类型 | 说明 |
259| -- | -- |
260| int32_t | 错误码。<br>             [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>             [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。<br>             [ARKUI_ERROR_CODE_ATTRIBUTE_OR_EVENT_NOT_SUPPORTED](capi-native-type-h.md#arkui_errorcode) 系统中未找到Native接口的动态实现库。<br>             [ARKUI_ERROR_CODE_ARKTS_NODE_NOT_SUPPORTED](capi-native-type-h.md#arkui_errorcode) 禁止对BuilderNode生成的节点进行设置属性、重置属性、设置事件与新增或修改子节点操作。<br>             ERROR_CODE_NATIVE_IMPL_NODE_ADAPTER_EXIST NodeAdapter已经存在。 |
261
262### getAttribute()
263
264```
265const ArkUI_AttributeItem* (*getAttribute)(ArkUI_NodeHandle node, ArkUI_NodeAttributeType attribute)
266```
267
268**描述:**
269
270
271属性获取函数。该接口返回的指针是ArkUI框架内部的缓冲区指针,不需要开发者主动调用delete释放内存,但是需要在该函数下一次被调用前使用,否则可能会被其他值所覆盖。
272
273**参数:**
274
275| 参数项                                                                                | 描述 |
276|------------------------------------------------------------------------------------| -- |
277| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node                   | 需要获取属性的节点对象。 |
278| [ArkUI_NodeAttributeType](capi-native-node-h.md#arkui_nodeattributetype) attribute | 需要获取的属性类型。 |
279
280**返回:**
281
282| 类型 | 说明 |
283| -- | -- |
284| const ArkUI_AttributeItem* | 当前属性类型的属性值,失败返回空指针。 |
285
286### resetAttribute()
287
288```
289int32_t (*resetAttribute)(ArkUI_NodeHandle node, ArkUI_NodeAttributeType attribute)
290```
291
292**描述:**
293
294
295重置属性函数。
296
297**参数:**
298
299| 参数项 | 描述 |
300| -- | -- |
301| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 需要重置属性的节点对象。 |
302|  [ArkUI_NodeAttributeType](capi-native-node-h.md#arkui_nodeattributetype) attribute | 需要重置的属性类型。 |
303
304**返回:**
305
306| 类型 | 说明 |
307| -- | -- |
308| int32_t | 错误码。<br>             [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>             [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。<br>             [ARKUI_ERROR_CODE_ATTRIBUTE_OR_EVENT_NOT_SUPPORTED](capi-native-type-h.md#arkui_errorcode) 系统中未找到Native接口的动态实现库。<br>             [ARKUI_ERROR_CODE_ARKTS_NODE_NOT_SUPPORTED](capi-native-type-h.md#arkui_errorcode) 禁止对BuilderNode生成的节点进行设置属性、重置属性、设置事件与新增或修改子节点操作。 |
309
310### registerNodeEvent()
311
312```
313int32_t (*registerNodeEvent)(ArkUI_NodeHandle node, ArkUI_NodeEventType eventType, int32_t targetId, void* userData)
314```
315
316**描述:**
317
318
319注册节点事件函数。
320
321**参数:**
322
323| 参数项                                                                        | 描述                                                                                      |
324|----------------------------------------------------------------------------|-----------------------------------------------------------------------------------------|
325| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node           | 需要注册事件的节点对象。                                                                            |
326| [ArkUI_NodeEventType](capi-native-node-h.md#arkui_nodeeventtype) eventType | 需要注册的事件类型。                                                                              |
327| int32_t targetId                                                           | 自定义事件ID,当事件触发时在回调参数[ArkUI_NodeEvent](capi-arkui-nativemodule-arkui-nodeevent.md) 中携带回来。 |
328| void* userData                                                             | 自定义事件参数,当事件触发时在回调参数[ArkUI_NodeEvent](capi-arkui-nativemodule-arkui-nodeevent.md) 中携带回来。                                    |
329
330**返回:**
331
332| 类型 | 说明 |
333| -- | -- |
334| int32_t | 错误码。<br>             [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>             [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。<br>             [ARKUI_ERROR_CODE_ATTRIBUTE_OR_EVENT_NOT_SUPPORTED](capi-native-type-h.md#arkui_errorcode) 系统中未找到Native接口的动态实现库。<br>             [ARKUI_ERROR_CODE_ARKTS_NODE_NOT_SUPPORTED](capi-native-type-h.md#arkui_errorcode) 禁止对BuilderNode生成的节点进行设置属性、重置属性、设置事件与新增或修改子节点操作。 |
335
336### unregisterNodeEvent()
337
338```
339void (*unregisterNodeEvent)(ArkUI_NodeHandle node, ArkUI_NodeEventType eventType)
340```
341
342**描述:**
343
344
345反注册节点事件函数。
346
347**参数:**
348
349| 参数项                                                              | 描述            |
350|------------------------------------------------------------------|---------------|
351| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 需要反注册事件的节点对象。 |
352| [ArkUI_NodeEventType](capi-native-node-h.md#arkui_nodeeventtype) eventType                                | 需要反注册的事件类型。              |
353
354### registerNodeEventReceiver()
355
356```
357void (*registerNodeEventReceiver)(void (*eventReceiver)(ArkUI_NodeEvent* event))
358```
359
360**描述:**
361
362
363注册事件回调统一入口函数。ArkUI框架会统一收集过程中产生的组件事件并通过注册的eventReceiver函数回调给开发者。<br> 重复调用时会覆盖前一次注册的函数。 避免直接保存ArkUI_NodeEvent对象指针,数据会在回调结束后销毁。<br> 如果需要和组件实例绑定,可以使用addNodeEventReceiver函数接口。<br>
364
365| 参数项 | 描述 |
366|-----|----|
367| eventReceiver | 事件回调统一入口函数。   |
368
369### unregisterNodeEventReceiver()
370
371```
372void (*unregisterNodeEventReceiver)()
373```
374
375**描述:**
376
377
378反注册事件回调统一入口函数。
379
380### markDirty()
381
382```
383void (*markDirty)(ArkUI_NodeHandle node, ArkUI_NodeDirtyFlag dirtyFlag)
384```
385
386**描述:**
387
388
389强制标记当前节点需要重新测算,布局或者绘制。系统属性设置更新场景下ArkUI框架会自动标记脏区并重新执行测算,布局或者绘制,不需要开发者主动调用该函数。
390
391**参数:**
392
393| 参数项                                                                        | 描述           |
394|----------------------------------------------------------------------------|--------------|
395| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node           | 需要标记脏区的节点对象。 |
396| [ArkUI_NodeDirtyFlag](capi-native-node-h.md#arkui_nodedirtyflag) dirtyFlag | 脏区类型。  |
397
398### getTotalChildCount()
399
400```
401uint32_t (*getTotalChildCount)(ArkUI_NodeHandle node)
402```
403
404**描述:**
405
406
407获取子节点的个数。
408
409**参数:**
410
411| 参数项 | 描述 |
412| -- | -- |
413| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 目标节点对象。 |
414
415**返回:**
416
417| 类型 | 说明 |
418| -- | -- |
419| uint32_t | 子节点的个数, 如果没有返回0。 |
420
421### getChildAt()
422
423```
424ArkUI_NodeHandle (*getChildAt)(ArkUI_NodeHandle node, int32_t position)
425```
426
427**描述:**
428
429
430获取子节点。
431
432**参数:**
433
434| 参数项 | 描述 |
435| -- | -- |
436| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 目标节点对象。 |
437|  int32_t position | 子组件的位置。 |
438
439**返回:**
440
441| 类型 | 说明 |
442| -- | -- |
443| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) | 返回组件的指针,如果没有返回NULL。 |
444
445### getFirstChild()
446
447```
448ArkUI_NodeHandle (*getFirstChild)(ArkUI_NodeHandle node)
449```
450
451**描述:**
452
453
454获取第一个子节点。
455
456**参数:**
457
458| 参数项 | 描述 |
459| -- | -- |
460| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 目标节点对象。 |
461
462**返回:**
463
464| 类型 | 说明 |
465| -- | -- |
466| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) | 返回组件的指针,如果没有返回NULL。 |
467
468### getLastChild()
469
470```
471ArkUI_NodeHandle (*getLastChild)(ArkUI_NodeHandle node)
472```
473
474**描述:**
475
476
477获取最后一个子节点。
478
479**参数:**
480
481| 参数项 | 描述 |
482| -- | -- |
483| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 目标节点对象。 |
484
485**返回:**
486
487| 类型 | 说明 |
488| -- | -- |
489| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) | 返回组件的指针,如果没有返回NULL。 |
490
491### getPreviousSibling()
492
493```
494ArkUI_NodeHandle (*getPreviousSibling)(ArkUI_NodeHandle node)
495```
496
497**描述:**
498
499
500获取上一个兄弟节点。
501
502**参数:**
503
504| 参数项 | 描述 |
505| -- | -- |
506| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 目标节点对象。 |
507
508**返回:**
509
510| 类型 | 说明 |
511| -- | -- |
512| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) | 返回组件的指针,如果没有返回NULL。 |
513
514### getNextSibling()
515
516```
517ArkUI_NodeHandle (*getNextSibling)(ArkUI_NodeHandle node)
518```
519
520**描述:**
521
522
523获取下一个兄弟节点。
524
525**参数:**
526
527| 参数项 | 描述 |
528| -- | -- |
529| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 目标节点对象。 |
530
531**返回:**
532
533| 类型 | 说明 |
534| -- | -- |
535| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) | 返回组件的指针,如果没有返回NULL。 |
536
537### registerNodeCustomEvent()
538
539```
540int32_t (*registerNodeCustomEvent)(ArkUI_NodeHandle node, ArkUI_NodeCustomEventType eventType, int32_t targetId, void* userData)
541```
542
543**描述:**
544
545
546注册自定义节点事件函数。事件触发时通过registerNodeCustomEventReceiver注册的自定义事件入口函数返回。
547
548**参数:**
549
550| 参数项                                                                                    | 描述 |
551|----------------------------------------------------------------------------------------| -- |
552| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node                       | 需要注册事件的节点对象。 |
553| [ArkUI_NodeCustomEventType](capi-native-node-h.md#arkui_nodecustomeventtype) eventType | 需要注册的事件类型。 |
554| int32_t targetId                                                                       | 自定义事件ID,当事件触发时在回调参数[ArkUI_NodeCustomEvent](capi-arkui-nativemodule-arkui-nodecustomevent.md) 中携带回来。 |
555| void* userData                                                                         | 自定义事件参数,当事件触发时在回调参数[ArkUI_NodeCustomEvent](capi-arkui-nativemodule-arkui-nodecustomevent.md) 中携带回来。 |
556
557**返回:**
558
559| 类型 | 说明 |
560| -- | -- |
561| int32_t | 错误码。<br>             [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>             [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。<br>             [ARKUI_ERROR_CODE_ATTRIBUTE_OR_EVENT_NOT_SUPPORTED](capi-native-type-h.md#arkui_errorcode) 系统中未找到Native接口的动态实现库。 |
562
563### unregisterNodeCustomEvent()
564
565```
566void (*unregisterNodeCustomEvent)(ArkUI_NodeHandle node, ArkUI_NodeCustomEventType eventType)
567```
568
569**描述:**
570
571
572反注册自定义节点事件函数。
573
574**参数:**
575
576| 参数项                                                                                    | 描述            |
577|----------------------------------------------------------------------------------------|---------------|
578| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node                       | 需要反注册事件的节点对象。 |
579| [ArkUI_NodeCustomEventType](capi-native-node-h.md#arkui_nodecustomeventtype) eventType | 需要反注册的事件类型。              |
580
581### registerNodeCustomEventReceiver()
582
583```
584void (*registerNodeCustomEventReceiver)(void (*eventReceiver)(ArkUI_NodeCustomEvent* event))
585```
586
587**描述:**
588
589
590注册自定义节点事件回调统一入口函数。ArkUI框架会统一收集过程中产生的自定义组件事件并通过注册的registerNodeCustomEventReceiver函数回调给开发者。<br> 重复调用时会覆盖前一次注册的函数。<br> 避免直接保存ArkUI_NodeCustomEvent对象指针,数据会在回调结束后销毁。<br> 如果需要和组件实例绑定,可以使用addNodeCustomEventReceiver函数接口。<br>
591
592| 参数项 | 描述 |
593|-----|----|
594| eventReceiver  | 事件回调统一入口函数。   |
595
596### unregisterNodeCustomEventReceiver()
597
598```
599void (*unregisterNodeCustomEventReceiver)()
600```
601
602**描述:**
603
604
605反注册自定义节点事件回调统一入口函数。
606
607### setMeasuredSize()
608
609```
610int32_t (*setMeasuredSize)(ArkUI_NodeHandle node, int32_t width, int32_t height)
611```
612
613**描述:**
614
615
616在测算回调函数中设置组件的测算完成后的宽和高。
617
618**参数:**
619
620| 参数项 | 描述 |
621| -- | -- |
622| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 目标节点对象。 |
623|  int32_t width | 设置的宽。 |
624|  int32_t height | 设置的高。 |
625
626**返回:**
627
628| 类型 | 说明 |
629| -- | -- |
630| int32_t | 错误码。<br>             [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>             [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。 |
631
632### setLayoutPosition()
633
634```
635int32_t (*setLayoutPosition)(ArkUI_NodeHandle node, int32_t positionX, int32_t positionY)
636```
637
638**描述:**
639
640
641在布局回调函数中设置组件的位置。该接口优先级低于NODE_POSITION。
642
643**参数:**
644
645| 参数项 | 描述 |
646| -- | -- |
647| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 目标节点对象。 |
648|  int32_t positionX | x轴坐标。 |
649|  int32_t positionY | y轴坐标。 |
650
651**返回:**
652
653| 类型 | 说明 |
654| -- | -- |
655| int32_t | 错误码。<br>             [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>             [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。 |
656
657### getMeasuredSize()
658
659```
660ArkUI_IntSize (*getMeasuredSize)(ArkUI_NodeHandle node)
661```
662
663**描述:**
664
665
666获取组件测算完成后的宽高尺寸。
667
668**参数:**
669
670| 参数项 | 描述 |
671| -- | -- |
672| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 目标节点对象。 |
673
674**返回:**
675
676| 类型                | 说明 |
677|-------------------| -- |
678| [ArkUI_IntSize](capi-arkui-nativemodule-arkui-intsize.md) | ArkUI_IntSize 组件的宽高。 |
679
680### getLayoutPosition()
681
682```
683ArkUI_IntOffset (*getLayoutPosition)(ArkUI_NodeHandle node)
684```
685
686**描述:**
687
688
689获取组件布局完成后的位置。
690
691**参数:**
692
693| 参数项 | 描述 |
694| -- | -- |
695| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 目标节点对象。 |
696
697**返回:**
698
699| 类型                  | 说明 |
700|---------------------| -- |
701| [ArkUI_IntOffset](capi-arkui-nativemodule-arkui-intoffset.md) | ArkUI_IntOffset 组件的位置。 |
702
703### measureNode()
704
705```
706int32_t (*measureNode)(ArkUI_NodeHandle node, ArkUI_LayoutConstraint* Constraint)
707```
708
709**描述:**
710
711
712对特定组件进行测算,可以通过getMeasuredSize接口获取测算后的大小。
713
714**参数:**
715
716| 参数项                                                              | 描述 |
717|------------------------------------------------------------------| -- |
718| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 目标节点对象。 |
719| [ArkUI_LayoutConstraint](capi-arkui-nativemodule-arkui-layoutconstraint.md)* Constraint                           | 约束尺寸。 |
720
721**返回:**
722
723| 类型 | 说明 |
724| -- | -- |
725| int32_t | 错误码。<br>             [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>             [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。 |
726
727### layoutNode()
728
729```
730int32_t (*layoutNode)(ArkUI_NodeHandle node, int32_t positionX, int32_t positionY)
731```
732
733**描述:**
734
735
736对特定组件进行布局并传递该组件相对父组件的期望位置。
737
738**参数:**
739
740| 参数项 | 描述 |
741| -- | -- |
742| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 目标节点对象。 |
743|  int32_t positionX | x轴坐标。 |
744|  int32_t positionY | y轴坐标。 |
745
746**返回:**
747
748| 类型 | 说明 |
749| -- | -- |
750| int32_t | 错误码。<br>             [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>             [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。 |
751
752### addNodeEventReceiver()
753
754```
755int32_t (*addNodeEventReceiver)(ArkUI_NodeHandle node, void (*eventReceiver)(ArkUI_NodeEvent* event))
756```
757
758**描述:**
759
760
761在组件上添加组件事件回调函数,用于接受该组件产生的组件事件。不同于registerNodeEventReceiver的全局注册函数,该函数允许在同一个组件上添加多个事件接受器。<br> 该函数添加的监听回调函数触发时机会先与registerNodeEventReceiver注册的全局回调函数。<br> 避免直接保存ArkUI_NodeEvent对象指针,数据会在回调结束后销毁。<br>
762
763**参数:**
764
765| 参数项                                                              | 描述 |
766|------------------------------------------------------------------| -- |
767| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 用于添加组件事件回调函数的对象。 |
768| eventReceiver                                                    | 组件事件回调函数。 |
769
770**返回:**
771
772| 类型 | 说明 |
773| -- | -- |
774| int32_t | 错误码。<br>             [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>             [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。 |
775
776### removeNodeEventReceiver()
777
778```
779int32_t (*removeNodeEventReceiver)(ArkUI_NodeHandle node, void (*eventReceiver)(ArkUI_NodeEvent* event))
780```
781
782**描述:**
783
784
785在组件上删除注册的组件事件回调函数。
786
787**参数:**
788
789| 参数项                                                              | 描述 |
790|------------------------------------------------------------------| -- |
791| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 用于删除组件事件回调函数的对象。 |
792| eventReceiver                                                    | 待删除的组件事件回调函数。 |
793
794**返回:**
795
796| 类型 | 说明 |
797| -- | -- |
798| int32_t | 错误码。<br>             [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>             [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。 |
799
800### addNodeCustomEventReceiver()
801
802```
803int32_t (*addNodeCustomEventReceiver)(ArkUI_NodeHandle node, void (*eventReceiver)(ArkUI_NodeCustomEvent* event))
804```
805
806**描述:**
807
808
809在组件上添加自定义事件回调函数,用于接受该组件产生的自定义事件(如布局事件,绘制事件)。不同于registerNodeCustomEventReceiver的全局注册函数,该函数允许在同一个组件上添加多个事件接受器。<br> 该函数添加的监听回调函数触发时机会先与registerNodeCustomEventReceiver注册的全局回调函数。<br> 避免直接保存ArkUI_NodeCustomEvent对象指针,数据会在回调结束后销毁。<br>
810
811**参数:**
812
813| 参数项                                                              | 描述 |
814|------------------------------------------------------------------| -- |
815| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 用于添加组件自定义事件回调函数的对象。 |
816| eventReceiver                                                    | 组件自定义事件回调函数。 |
817
818**返回:**
819
820| 类型 | 说明 |
821| -- | -- |
822| int32_t | 错误码。<br>             [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>             [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。 |
823
824### removeNodeCustomEventReceiver()
825
826```
827int32_t (*removeNodeCustomEventReceiver)(ArkUI_NodeHandle node, void (*eventReceiver)(ArkUI_NodeCustomEvent* event))
828```
829
830**描述:**
831
832
833在组件上删除注册的自定义事件回调函数。
834
835**参数:**
836
837| 参数项                                                              | 描述 |
838|------------------------------------------------------------------| -- |
839| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 用于删除组件自定义事件回调函数的对象。 |
840| eventReceiver                                                    | 待删除的组件自定义事件回调函数。 |
841
842**返回:**
843
844| 类型 | 说明 |
845| -- | -- |
846| int32_t | 错误码。<br>             [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>             [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。 |
847
848### setUserData()
849
850```
851int32_t (*setUserData)(ArkUI_NodeHandle node, void* userData)
852```
853
854**描述:**
855
856
857在组件上保存自定义数据。
858
859**参数:**
860
861| 参数项 | 描述 |
862| -- | -- |
863| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 用于保存自定义数据的组件。 |
864|  void* userData | 要保存的自定义数据。 |
865
866**返回:**
867
868| 类型 | 说明 |
869| -- | -- |
870| int32_t | 错误码。<br>             [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>             [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。 |
871
872### getUserData()
873
874```
875void* (*getUserData)(ArkUI_NodeHandle node)
876```
877
878**描述:**
879
880
881获取在组件上保存的自定义数据。
882
883**参数:**
884
885| 参数项 | 描述 |
886| -- | -- |
887| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 保存了自定义数据的组件。 |
888
889**返回:**
890
891| 类型 | 说明 |
892| -- | -- |
893| void* | 自定义数据。 |
894
895### setLengthMetricUnit()
896
897```
898int32_t (*setLengthMetricUnit)(ArkUI_NodeHandle node, ArkUI_LengthMetricUnit unit)
899```
900
901**描述:**
902
903
904指定组件的单位。
905
906**参数:**
907
908| 参数项                                                                         | 描述 |
909|-----------------------------------------------------------------------------| -- |
910| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node            | 用于指定单位的组件。 |
911| [ArkUI_LengthMetricUnit](capi-native-type-h.md#arkui_lengthmetricunit) unit | 单位类型[ArkUI_LengthMetricUnit](capi-native-type-h.md#arkui_lengthmetricunit),默认为 ARKUI_LENGTH_METRIC_UNIT_DEFAULT。 |
912
913**返回:**
914
915| 类型 | 说明 |
916| -- | -- |
917| int32_t | 错误码。<br>             [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>             [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。 |
918
919### getParent()
920
921```
922ArkUI_NodeHandle (*getParent)(ArkUI_NodeHandle node)
923```
924
925**描述:**
926
927
928获取父节点。
929
930**参数:**
931
932| 参数项 | 描述 |
933| -- | -- |
934| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 目标节点对象。 |
935
936**返回:**
937
938| 类型 | 说明 |
939| -- | -- |
940| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) | 返回组件的指针,如果没有返回NULL。 |
941
942### removeAllChildren()
943
944```
945int32_t (*removeAllChildren)(ArkUI_NodeHandle parent)
946```
947
948**描述:**
949
950
951从父组件上卸载所有子节点。
952
953**起始版本:** 12
954
955**参数:**
956
957| 参数项 | 描述 |
958| -- | -- |
959| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) parent | 目标节点对象。 |
960
961**返回:**
962
963| 类型 | 说明 |
964| -- | -- |
965| int32_t | 错误码。<br>             [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>             [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。 |
966
967
968