it-swarm.dev

Android: diferença entre invisível e desaparecido?

Qual é a diferença entre invisible e gone para o status Exibir visibilidade?

425
Rob

INVISÍVEL:

Essa visão é invisível, mas ainda ocupa espaço para propósitos de layout.

SE FOI:

Essa visão é invisível e não ocupa espaço para fins de layout.

654
Iñigo

De Documentação você pode dizer isso

View.GONE Esta visão é invisível, e não ocupa nenhum espaço para propósitos de layout.

View.INVISIBLE Esta visão é invisível, mas ainda ocupa espaço para propósitos de layout.


Permite limpar a ideia com algumas fotos.

Suponha que você tenha três botões, como abaixo

enter image description here

Agora, se você definir a visibilidade do botão dois como invisível (View.INVISIBLE), a saída será

enter image description here

E quando você definir a visibilidade do botão dois como ida (View.GONE), a saída será

enter image description here

Espero que isso limpe suas dúvidas.

243
Pankaj Kumar

Para ListView ou GridView, há uma outra diferença, quando a visibilidade é inicialmente definida como

INVISÍVEL:

Função getView () do adaptador chamada

SE FOI:

A função getView () do adaptador não chamou, evitando assim que as visualizações sejam carregadas, quando é desnecessário

29
mes

INVISÍVEL:
A visão tem que ser desenhada e leva tempo.

SE FOI:
A visão não precisa ser desenhada.

9
twlkyao

Gostaria de acrescentar às respostas corretas e bem-sucedidas que, se você inicializar uma visualização com visibilidade como View.GONE, a visualização pode não ter sido inicializada e você receberá alguns erros aleatórios.

Por exemplo, se você inicializar um layout como View.GONE e, em seguida, tentar iniciar uma animação, por experiência própria, minha animação estará funcionando aleatoriamente. Às vezes sim, às vezes não.

Portanto, antes de manipular (redimensionar, mover, qualquer que seja) uma visualização, você precisa iniciar como View.VISIBLE ou View.INVISIBLE para renderizá-lo (desenhá-lo) na tela e, em seguida, manipulá-lo.

4
Rafael Ruiz Muñoz
  • View.INVISIBLE -> A visualização é invisível, mas ocupará algum espaço no layout

  • View.GONE -> A visualização não é visível e não ocupará espaço no layout

3
Yugandhar Vadlamudi

quando você faz isso Toda vez que o programa é compilado, o componente é inicializado, o que significa que você está removendo o componente do layout e, ao torná-lo invisível, ele ocupará o mesmo espaço no layout, mas toda vez que você não precisar inicializá-lo .

se você definir Visibility = Gone, então você tem que inicializar o componente ... como

por exemplo, Button _mButton = new Botão (este);

_mButton = (Button) findViewByid (R.id.mButton);

então, isso levará mais tempo em comparação com Visibilidade = invisível.

2
kuldeep zala