跳到主要内容

可见约束 (Selector.visible)

Selector.visible

声明

node.selector():visible(val)

参数

参数类型是否必填说明
valbooleantrue=显示在屏幕上,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()