如何检查Android中的视图是否可见?

时间:2010-09-24 23:01:00

标签: android user-interface visible

我在Android上将visibility设置为隐身:

myImageView.setVisibility(View.INVISIBLE);

然后让它可见:

myImageView.setVisibility(View.VISIBLE);

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

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

我该怎么做?我必须在括号内写什么?

4 个答案:

答案 0 :(得分:438)

虽然View.getVisibility()确实获得了可见性,但它不是简单的true / false。视图可以将其可见性设置为三件事之一。

<强> View.VISIBLE 视图可见。

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

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

所以要回答你的问题,你正在寻找:

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

答案 1 :(得分:109)

或者你可以简单地使用

View.isShown()

答案 2 :(得分:49)

如果图像是布局的一部分,则可能是“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
}

答案 3 :(得分:3)

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