跳到主要内容

获取兄弟控件 (Node.brother)

Node.brother

声明

brother_node = node:brother()
brother_node = node:brother(val)
brother_nodes = node:brother(val1, val2, ...)

参数

参数类型是否必填说明
valnumber获取第 val 个兄弟控件。默认获取所有兄弟。(1)=第1个兄弟,(1,2)=第1和第2个兄弟,(1.4)=1-4之间所有兄弟,(0.1)=下一个兄弟,(-0.1)=上一个兄弟,(-1)=倒数第1个兄弟

返回值

类型说明
Node 或 table结果为一个时返回控件对象,多个时返回列表

说明

获取当前控件的兄弟控件(同级控件)。

工作原理:

  • 获取与当前控件同一父控件下的其他控件
  • 支持多种灵活的参数格式,可获取单个或多个兄弟控件

参数格式详解:

  • 无参数 brother() - 获取所有兄弟控件(不含自己)
  • brother(1) - 获取第1个兄弟控件
  • brother(-1) - 获取最后1个兄弟控件
  • brother(0.1) - 获取下一个兄弟(当前控件后面的)
  • brother(-0.1) - 获取上一个兄弟(当前控件前面的)
  • brother(1, 2) - 获取第1和第2个兄弟
  • brother(1.4) - 获取第1到第4个兄弟(范围)

适用场景:

  • 在列表中从已定位的项导航到相邻项
  • 获取表格中同一行的其他单元格
  • 遍历同级控件

注意事项:

  • 兄弟控件不包含当前控件自身
  • 索引基于父控件的所有子控件计算
  • 0.1-0.1 是相对于当前控件位置的特殊语法
  • 返回类型取决于结果数量:单个返回 Node,多个返回 table
待实现

该接口正在开发中。

示例

local node = require("node")

local n = node.selector():id("com.example:id/item"):find()

if n then
-- 获取 n 控件的第1个兄弟控件
local n_brother = n:brother(1)
if n_brother then
print(n_brother)
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:
node_brother = node.brother(1)
if node_brother:
print(node_brother)