How to Tell If a View Is Visible on Screen in Android

How can I check if a view is visible or not in Android?

Although View.getVisibility() does get the visibility, its not a simple true/false. A view can have its visibility set to one of three things.

View.VISIBLE
The view is visible.

View.INVISIBLE
The view is invisible, but any spacing it would normally take up will still be used. Its "invisible"

View.GONE
The view is gone, you can't see it and it doesn't take up the "spot".

So to answer your question, you're looking for:

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

How can I check if a View is visible (android listview)

You can use

  1. getVisibility () Returns the visibility status for this view .

  2. isShown () Returns the visibility of this view and all of its ancestors .

getVisibility()

 if (ViewObj.getVisibility() == View.VISIBLE) {
// Your Staff
} else {
// Your Staff
}

isShown ()

True if this view and all of its ancestors are VISIBLE

Determine if a view is on screen - Android

Ok so thanks to OceanLife for pointing me in the right direction! There was indeed a callback required and ViewTreeObserver.OnGlobalLayoutListener() did the trick. I ended up implementing the listener against my fragment class and picked it up where I needed it. Thanks for the warning too regarding the multiple calls, I resolved this using the removeOnGlobalLayoutListener() method - works a charm.

Code:

...

// vto initialised in my onCreateView() method

vto = getView().getViewTreeObserver();
vto.addOnGlobalLayoutListener(this);

...

@Override
public void onGlobalLayout() {

final int i[] = new int[2];
final Rect scrollBounds = new Rect();

sView.getHitRect(scrollBounds);
tempView.getLocationOnScreen(i);

if (i[1] >= scrollBounds.bottom) {
sView.post(new Runnable() {
@Override
public void run() {
sView.smoothScrollTo(0, sView.getScrollY() + (i[1] - scrollBounds.bottom));
}
});
}

vto.removeOnGlobalLayoutListener(this);
}

Just got to do some cleaning up now ...



Related Topics



Leave a reply



Submit