Android 如何判断一个View在屏幕上可见
自动化测试中,遇到一个问题。
由于存在多个View覆盖,有什么方法,
能判断哪个或哪些View在屏幕上可见,并将屏幕不可见的view过滤掉。
我曾采用
view.hasWindowFocus() && view.getVisibility() == View.VISIBLE && view.isShown()
但这三个条件都不能很好的解决, 即使某个view在下层,屏幕上不可见,但依然能通过我的判断条件。
求帮助。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
就算View被别的View挡住了,也是有可能获取到点击事件或者说被用户看到的。所以这不是根本解决之道。不知道你是想测什么东西。为何要把没有显示在最上层的View给过滤掉
处于什么目的呢
`private boolean isViewVisible(View host, Rect window, boolean fullVisible) {
if (host.getWindowVisibility() == View.VISIBLE) {
// that this view is not visible to the user. Object current = host;
while (current instanceof View) {
// We have attach info so this view is attached and there is no
// need to check whether we reach to ViewRootImpl on the way up. if (view.getAlpha() <= 0 || view.getVisibility() != View.VISIBLE) {
}
}
// host.getWindowVisibleDisplayFrame(mWindowRect); Rect visibleRect = new Rect();
if (fullVisible) {
if (!host.getLocalVisibleRect(visibleRect)) {
}
} else {
if (!host.getGlobalVisibleRect(visibleRect)) {
}
}