How can you tell if a View is visible on screen in Android?

混江龙づ霸主 提交于 2019-11-30 04:17:24

This code works for me:

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);
}
int[] location = new int[2];
view.getLocationOnScreen(location);

or

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

Now use this location or rectangle to check if it is in your visible bounds or not. If it is simply the entire screen, check against getResources().getDisplayMetrics().

As pointed by Antek in the comments below, the view may still be gone or invisible with the returned values here telling where it was last drawn. So combining the above bounds-related condition with an view.isShown() or view.getVisibility() == VISIBLE should take care of that.

try

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

The getVisibility() method will help you to check the visibility of any View.

Example:

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

The function View.getVisibility() can have below values:

  • View.VISIBLE (0): the view is visible.

  • View.INVISIBLE (1): The view is invisible, but it still takes up space for layout purposes.

  • View.GONE (2): the view is gone. Completely hidden, as if the view had not been added

You can see below link for more info. How can I check if a view is visible or not in Android?

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!