web-dev-qa-db-ja.com

Androidの画面にビューが表示されているかどうかを確認するにはどうすればよいですか?

View内のScrollViewが現在Androidで表示されているかどうかを確認します。まだ焦点が合っているかどうかはチェックしていませんが、現在画面に表示されているかどうかを確認しています。ビューが現在表示されているかどうかを確認できるViewのメソッドはありますか?

34
user1847544

このコードは私のために機能します:

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

または

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

次に、この場所または四角形を使用して、表示されている境界内にあるかどうかを確認します。単に画面全体である場合は、getResources().getDisplayMetrics()を確認してください。

以下のコメントでAntekが指摘したように、ビューはまだ表示されていないか、最後に描画された場所を示す戻り値が表示されている可能性があります。したがって、上記の境界関連の条件をview.isShown()またはview.getVisibility() == VISIBLEと組み合わせることで、それを処理する必要があります。

15
AA_PV