From ee2f1c7a12a0ef6d99eaaac6bfaccf2bb7bf294a Mon Sep 17 00:00:00 2001 From: liugang9704 <2745340733@qq.com> Date: Wed, 6 Aug 2025 09:30:51 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9EFAQ=E5=90=8C=E6=BA=90?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/ets/pages/FrameNodeJudgmentNode.ets | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 ArkUI/entry/src/main/ets/pages/FrameNodeJudgmentNode.ets diff --git a/ArkUI/entry/src/main/ets/pages/FrameNodeJudgmentNode.ets b/ArkUI/entry/src/main/ets/pages/FrameNodeJudgmentNode.ets new file mode 100644 index 0000000..df8f474 --- /dev/null +++ b/ArkUI/entry/src/main/ets/pages/FrameNodeJudgmentNode.ets @@ -0,0 +1,59 @@ +/* +* Copyright (c) 2024 Huawei Device Co., Ltd. +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* +* FAQ: FrameNode的isAttached接口是否可以判断FrameNode节点出现在屏幕上? +*/ + +// [Start frame_node_judgment_node] +import { FrameNode, NodeController, UIContext } from '@kit.ArkUI'; + +class MyNodeController extends NodeController { + rootNode: FrameNode | null = null; + node1: FrameNode | null = null; + node2: FrameNode | null = null; + + makeNode(uiContext: UIContext): FrameNode | null { + this.rootNode = new FrameNode(uiContext); + this.node1 = new FrameNode(uiContext); + this.node1.commonAttribute.id('node1'); // 设置id + this.node2 = new FrameNode(uiContext); + this.node2.commonAttribute.id('node2'); // 设置id + this.rootNode.appendChild(this.node1); // node1在主树上,node2不在主树上 + return this.rootNode; + } +} + +@Entry +@Component +struct Index { + myNodeController: MyNodeController = new MyNodeController(); + + build() { + Column() { + NodeContainer(this.myNodeController) + Button('Click') + .onClick(() => { + // 如果通过getAttachedFrameNodeById获取不到节点,则说明节点没有被挂载到主树上 + console.info('node1 is attached to main tree: ' + + (this.getUIContext().getAttachedFrameNodeById('node1') !== null)); + console.info('node2 is attached to main tree: ' + + (this.getUIContext().getAttachedFrameNodeById('node2') !== null)); + }) + } + } +} + +// [End frame_node_judgment_node] \ No newline at end of file -- Gitee