你怎么能告诉我们,如果一个视图是可见屏幕的Android?(How can you tell if

2019-07-17 14:00发布

我要检查,如果View一个内ScrollView是目前Android中可见。 我没有检查,如果它是专注于尚未但如果目前正在显示在屏幕上了。 是否有一种方法View ,可以告诉我,如果认为是当前可见的?

Answer 1:

此代码的工作对我来说:

public static boolean isVisible(final View view) {
    if (view == null) {
        return false;
    }
    if (!view.isShown()) {
        return false;
    }
    final Rect actualPosition = new Rect();
    view.getGlobalVisibleRect(actualPosition);
    final Rect screen = new Rect(0, 0, getScreenWidth(), getScreenHeight());
    return actualPosition.intersect(screen);
}


Answer 2:

int[] location = new int[2];
view.getLocationOnScreen(location);

要么

Rect rect = new Rect();
view.getGlobalVisibleRect(rect);

现在,使用此位置或长方形,以检查它是否在您的可视范围或没有。 如果它仅仅是整个屏幕,核对getResources().getDisplayMetrics()

正如下面的评论中指出的ANTEK,视图可能仍然会丢失或者无形的在这里说的是返回值,其中它是最后绘制的。 因此,与结合上述范围相关的条件view.isShown()view.getVisibility() == VISIBLE应采取照顾。



Answer 3:

尝试

if(view.isShown()) {
    // Visible
} else { 
    // Invisible
}


Answer 4:

getVisibility()方法将帮助您检查任何的知名度View

例:

if(view.getVisibility() == View.VISIBLE) {
    // Visible
} else { 
    // Invisible
}


Answer 5:

功能View.getVisibility()可以具有低于值:

  • View.VISIBLE(0):视图是可见的。

  • View.INVISIBLE(1):视图是不可见的,但它仍然占用空间布局的目的。

  • View.GONE(2):视图不见了。 彻底隐藏,仿佛没有被添加视图

你可以看到下面的链接了解更多信息。 我如何检查是否一个视图可见或不可见的安卓?



文章来源: How can you tell if a View is visible on screen in Android?