Comment puis-je vérifier si une vue est visible ou non sur Android? [dupliquer]

cette question a déjà une réponse ici:

  • Android: Comment vérifier si une vue à L'intérieur de ScrollView est visible? 11 réponses

j'ai mis visibility invisible de ce genre sur Android:

myImageView.setVisibility(View.INVISIBLE);

et ensuite pour le rendre visible:

myImageView.setVisibility(View.VISIBLE);

maintenant je ne sais pas si myImageView est visible ou non, Comment puis-je le vérifier comme ceci:

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

Comment faire? Qu'est-ce que je dois écrire entre parenthèses?

153
demandé sur Enve 2010-09-25 03:01:00

4 réponses

Bien Que Vue.getVisibility () obtient la visibilité, ce n'est pas un simple true/false. Une vue peut avoir sa visibilité fixée à l'une de trois choses.

View.VISIBLE La vue est visible.

View.INVISIBLE La vue est invisible, mais tout espacement qu'elle prendrait normalement sera toujours utilisé. Son" invisible "

View.Parti La vue a disparu, toi ne pouvez pas le voir et ne pas prendre le "spot".

alors pour répondre à votre question, vous cherchez:

if (myImageView.getVisibility() == View.VISIBLE) {
    // Its visible
} else {
    // Either gone or invisible
}
403
répondu William 2010-09-24 23:20:39

ou vous pouvez simplement utiliser

View.isShown()
103
répondu deviato 2012-01-23 23:02:51

Si l'image fait partie de la mise en page, il peut être "Vue.VISIBLE" mais cela ne signifie pas qu'il est dans les limites de l'écran visible. Si c'est ce que vous voulez, ça marchera:

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
}
47
répondu Bill Mote 2012-09-14 16:08:26

vous devez utiliser la méthode correspondante getVisibility() . Les noms de méthode préfixés par' get 'et' set ' sont les conventions de Java pour représenter les propriétés. Certaines langues ont des constructions de langage réelles pour les propriétés, mais Java n'en fait pas partie. Donc quand vous voyez quelque chose appelé 'setX', vous pouvez être certain à 99% qu'il y a un 'getX' correspondant qui vous indiquera la valeur.

3
répondu colithium 2010-09-24 23:06:15