如何检查一个视图在Android中是否可见?

在Android上,我将visibility设置为不可见,如下所示:

myImageView.setVisibility(View.INVISIBLE);

然后让它可见:

myImageView.setVisibility(View.VISIBLE);

现在我不知道myImageView是否可见,我如何像这样检查它:

if (myImageView IS VISIBLE) {
Do something
} else {
Do something else
}

我该怎么做呢?括号里要写什么?

235542 次浏览

你可以使用相应的方法getVisibility ()。以“get”和“set”为前缀的方法名是Java表示属性的惯例。有些语言有实际的属性语言结构,但Java不是其中之一。所以当你看到一些标记为“setX”的东西时,你可以99%确定有一个对应的“getX”会告诉你这个值。

尽管View.getVisibility()确实获得了可见性,但它不是简单的true/false。视图的可见性可以设置为以下三种情况之一。

< >强劲的观点。可见

< >强劲的观点。看不见的 视图是不可见的,但它通常占用的任何间距仍将被使用。其“看不见的”< / p >

< >强劲的观点。走了 视图消失了,你看不到它,它也没有占据“位置”

为了回答你的问题,你要找的是:

if (myImageView.getVisibility() == View.VISIBLE) {
// Its visible
} else {
// Either gone or invisible
}

或者你可以简单地用

View.isShown()

如果图像是布局的一部分,它可能是“视图”。但这并不意味着它在可见屏幕的范围内。如果这是你想要的;这是可行的:

Rect scrollBounds = new Rect();
scrollView.getHitRect(scrollBounds);
if (imageView.getLocalVisibleRect(scrollBounds)) {
// imageView is within the visible window
} else {
// imageView is not within the visible window
}