web-dev-qa-db-fra.com

Comment puis-je vérifier si une vue est visible ou non dans Android?

Je règle visibility sur invisible comme ceci sur Android:

myImageView.setVisibility(View.INVISIBLE);

Et puis 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 puis je faire ça? Qu'est-ce que je dois écrire entre parenthèses?

164
Martin

Bien que View.getVisibility () obtienne la visibilité, ce n'est pas un simple vrai/faux. Une visibilité peut avoir sa visibilité définie sur l'une des trois choses suivantes.

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.GONE La vue a disparu, vous ne pouvez pas la voir et elle ne prend pas la "place".

Donc, pour répondre à votre question, vous recherchez:

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

Ou vous pouvez simplement utiliser

View.isShown()
113
deviato

Si l'image fait partie de la mise en page, il peut s'agir de "View.VISIBLE" mais cela ne signifie pas qu'elle se trouve dans les limites de l'écran visible. Si c'est ce que vous recherchez, cela fonctionnera:

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
}
52
Bill Mote

Vous utiliseriez la méthode correspondante getVisibility () . Les noms de méthodes précédés de 'get' et 'set' sont la convention de Java pour la représentation des propriétés. Certains langages ont des constructions de langage pour les propriétés mais Java n'en fait pas partie. Ainsi, lorsque vous voyez quelque chose appelé "setX", vous pouvez être sûr à 99% qu'il existe un "getX" correspondant qui vous indiquera la valeur.

3
colithium