获取父控件 (Node.parent)
Node.parent
声明
parent_node = node:parent()
parent_node = node:parent(val)
parent_nodes = node:parent(val1, val2, ...)
参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| val | number | 否 | 获取第 val 个父控件。默认获取所有父元素。(2)=爷爷元素,(3)=太爷爷元素,(1,3)=第1和第3个父元素,(1.3)=第1-3之间的所有父元素 |
返回值
| 类型 | 说明 |
|---|---|
| Node 或 table | 结果为一个时返回控件对象,多个时返回列表 |
说明
获取当前控件的父级控件。
工作原理:
- 沿着控件树向上遍历,获取指定层级的父控件
- 支持多种灵活的参数格式,可获取单个或多个父控件
参数格式详解:
- 无参数
parent()- 获取所有父控件(从直接父到根) parent(1)- 获取直接父控件parent(2)- 获取爷爷控件(父的父)parent(1, 3)- 获取第1个和第3个父控件parent(1.3)- 获取第1到第3个父控件(范围)
适用场景:
- 从子控件导航到父容器
- 获取控件的层级结构信息
- 当子控件不可点击时,向上查找可点击的父控件
注意事项:
- 根控件(通常是 DecorView)没有父控件
- 索引从 1 开始,1 表示直接父控件
- 返回类型取决于结果数量:单个返回 Node,多个返回 table
待实现
该接口正在开发中。
示例
local node = require("node")
local n = node.selector():id("com.example:id/container"):find()
if n then
-- 获取 n 控件的父元素
local nP = n:parent(1)
if nP then
print(nP)
end
end
AScript 对应
# AScript (Python)
from ascript.android.node import Selector
node = Selector().id("com.aojoy.airscript:id/search_query_section").type("FrameLayout").find()
if node:
nP = node.parent(1)
if nP:
print(nP)