206

visibility在Android上设置为不可见:

myImageView.setVisibility(View.INVISIBLE);

然后让它可见:

myImageView.setVisibility(View.VISIBLE);

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

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

我怎样才能做到这一点?我必须在括号内写什么?

4

4 回答 4

512

尽管 View.getVisibility() 确实获得了可见性,但它不是简单的真/假。视图可以将其可见性设置为三项之一。

View.VISIBLE 视图可见。

View.INVISIBLE 视图是不可见的,但它通常占用的任何间距仍将被使用。它的“隐形”

View.GONE 视图消失了,你看不到它,它也没有占据“点”。

因此,要回答您的问题,您正在寻找:

if (myImageView.getVisibility() == View.VISIBLE) {
    // Its visible
} else {
    // Either gone or invisible
}
于 2010-09-24T23:20:39.620 回答
133

或者你可以简单地使用

View.isShown()
于 2012-01-23T23:02:51.593 回答
66

如果图像是布局的一部分,它可能是“View.VISIBLE”,但这并不意味着它在可见屏幕的范围内。如果这就是你所追求的;这将起作用:

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
}
于 2012-09-14T16:08:26.257 回答
3

您将使用相应的方法getVisibility()。以“get”和“set”为前缀的方法名称是 Java 表示属性的约定。某些语言具有用于属性的实际语言结构,但 Java 不是其中之一。因此,当您看到标有“setX”的内容时,您可以 99% 确定有一个相应的“getX”会告诉您该值。

于 2010-09-24T23:06:15.380 回答