可见约束 (Selector.visible)
Selector.visible
声明
node.selector():visible(val)
参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| val | boolean | 是 | true=显示在屏幕上,false=隐藏或在屏幕之外 |
返回值
| 类型 | 说明 |
|---|---|
| Selector | 返回控件查找器,用于链式编程 |
说明
通过控件的可见性(visibleToUser)约束控件。
属性含义:
visible=true表示控件对用户可见(在屏幕内且未被完全遮挡)visible=false表示控件对用户不可见(在屏幕外、被遮挡或隐藏)
可见性判断依据:
- 控件是否在当前屏幕可视区域内
- 控件是否被其他控件完全遮挡
- 控件的 visibility 属性是否为 VISIBLE
适用场景:
visible(true)- 查找用户当前能看到的控件visible(false)- 查找被隐藏或在屏幕外的控件- 优化查找范围,只处理可见控件
典型应用:
- 只操作用户可见的按钮,避免误操作
- 检测控件是否已滚动到可视区域
- 过滤掉 RecyclerView 中未显示的复用控件
注意事项:
- 即使 visible=false,控件仍可能存在于控件树中
- 列表滚动后,原本不可见的控件可能变为可见
- 某些透明或半透明控件可能仍报告为 visible=true
- 与
enabled不同,visible 关注的是视觉可见性
待实现
该接口正在开发中。
示例
local node = require("node")
-- 查找所有用户不可见的控件
local nodes = node.selector():visible(false):find_all()
if nodes then
for _, node in ipairs(nodes) do
print(node)
end
else
print("没有找到任何控件")
end
AScript 对应
# AScript (Python)
from ascript.android.node import Selector
nodes = Selector().visible(False).find_all()