web-dev-qa-db-ja.com

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

Androidでvisibilityを次のように非表示に設定します。

myImageView.setVisibility(View.INVISIBLE);

そして、それを表示するには:

myImageView.setVisibility(View.VISIBLE);

myImageViewが表示されているかどうかはわかりませんが、次のように確認できます。

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

どうやってやるの?括弧内に何を書く必要がありますか?

160
Martin

View.getVisibility()は可視性を取得しますが、単純なtrue/falseではありません。ビューの可視性は、次の3つのいずれかに設定できます。

View.VISIBLEビューが表示されます。

View.INVISIBLEビューは表示されませんが、通常使用する間隔は引き続き使用されます。その「見えない」

View.GONEビューはなくなりました。表示できず、「スポット」を占有しません。

あなたの質問に答えるために、あなたは探しています:

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

または、単に使用することができます

View.isShown()
109
deviato

画像がレイアウトの一部である場合、「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
}
49
Bill Mote

対応するメソッド getVisibility() を使用します。 「get」および「set」が前に付いたメソッド名は、プロパティを表すためのJavaの規則です。一部の言語には、プロパティの実際の言語構造がありますが、Javaはそれらの1つではありません。したがって、「setX」というラベルの付いたものが表示された場合、値を伝える対応する「getX」があることを99%確信できます。

3
colithium