it-swarm-pt.tech

Como posso verificar se uma visualização está visível ou não no Android?

Eu configurei visibility para invisível assim no Android:

myImageView.setVisibility(View.INVISIBLE);

E então para torná-lo visível:

myImageView.setVisibility(View.VISIBLE);

Agora eu não sei se myImageView é visível ou não, como posso verificar isso assim:

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

Como eu posso fazer isso? O que devo escrever entre colchetes?

160
Martin

Embora View.getVisibility () obtenha a visibilidade, não é um simples verdadeiro/falso. Uma visão pode ter sua visibilidade definida para uma das três coisas.

View.VISIBLE A visão é visível.

View.INVISIBLE A vista é invisível, mas qualquer espaçamento que normalmente ocuparia ainda será usado. Seu "invisível"

View.GONE A visão se foi, você não pode vê-lo e não ocupa o "ponto".

Então, para responder sua pergunta, você está procurando:

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

Ou você poderia simplesmente usar

View.isShown()
109
deviato

Se a imagem fizer parte do layout, pode ser "View.VISIBLE", mas isso não significa que ela esteja dentro dos limites da tela visível. Se é isso que você procura; isso vai funcionar:

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

Você usaria o método correspondente getVisibility () . Os nomes dos métodos prefixados com 'get' e 'set' são a convenção do Java para representar as propriedades. Algumas linguagens têm construções de linguagem reais para propriedades, mas Java não é uma delas. Então, quando você vê algo chamado 'setX', você pode ter 99% de certeza de que há um 'getX' correspondente que lhe dirá o valor.

3
colithium