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

477

Qual é a diferença entre invisiblee gonepara o status de visibilidade da exibição?

Roubar
fonte
26
Quando uma Visualização desaparece, significa que não ocupa espaço no layout. Quando está invisível, ele ocupa o espaço necessário em um layout, mas você simplesmente não o vê.
DroidBender

Respostas:

709

INVISÍVEL:

Essa visualização é invisível, mas ainda ocupa espaço para fins de layout.

FOI:

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

Iñigo
fonte
113
Looks como análoga a display:none& visibility:hiddenem HTML / CSS :-)
anishsane
Ou para Hidden and Collapsed no Wpf XAML
juliushuck
1
Se estiver invisível, clique nele também está desativado?
Kuldeep Yadav
1
@KuldeepYadav sim, ele desapareceu e ficou invisível.
Steve moretz 06/02/19
1
apenas para futuros leitores curiosos: ainda podemos usar performItemClick nas visualizações de lista / grade, mesmo que sejam invisíveis.
kiranking
264

Na documentação, você pode dizer que

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

Visão.INVISÍVEL Esta visão é invisível, mas ainda ocupa espaço para fins de layout.


Vamos esclarecer a idéia com algumas fotos.

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

insira a descrição da imagem aqui

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

insira a descrição da imagem aqui

E quando você define a visibilidade do Botão Dois como desapareceu ( View.GONE), a saída será

insira a descrição da imagem aqui

Espero que isso esclareça suas dúvidas.

Pankaj Kumar
fonte
4
A ideia precisa ser apagada? Parece claro o suficiente para mim apenas a partir da explicação.
John Dvorak
16
@JanDvorak :) Great! Não tenho resposta para sua pergunta. Se você acha que isso ficou muito claro para todos os usuários, a resposta aceita deve ser um comentário e ter um link para o site de documentação. Estou correcto?
Pankaj Kumar
e se eu usá-lo para o edittext. é possível obter o valor do edittext?
Ashish
32

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

INVISÍVEL:

A função getView () do adaptador chamada

FOI:

A função getView () do adaptador não foi chamada, impedindo o carregamento de visualizações, quando é desnecessário

mes
fonte
10

INVISÍVEL:
A vista precisa ser desenhada e leva tempo.

GONE:
A vista não precisa ser desenhada.

twlkyao
fonte
8
A vista não é desenhada, é medida e definida.
Cyroxis
@cyroxis talvez ele / ela queira dizer método ondraw!
David
7

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

Por exemplo, se você inicializar um layout View.GONEe tentar iniciar uma animação, pela minha experiência, minha animação funcionará aleatoriamente. Às vezes sim, às vezes não.

Portanto, antes de manipular (redimensionar, mover, qualquer que seja) uma visão, você deve iniciá-la como View.VISIBLEou View.INVISIBLErenderizá-la (desenhá-la) na tela e manipular.

Rafael Ruiz Muñoz
fonte
Sim, você está certo, trabalhando apenas algumas vezes, quando vista éGONE
Suraj Bahadur
4

Quando você o faz Toda vez que a compilação do programa é inicializada, o componente é inicializado, o que significa que você está removendo o componente do layout e quando o torna invisível, o componente ocupa o mesmo espaço no layout, mas toda vez que você não precisa inicializá-lo .

se você definir Visibility = Gone, precisará inicializar o componente.

por exemplo, Button _mButton = new Button (this);

_mButton = (Botão) findViewByid (R.id.mButton);

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

kuldeep zala
fonte
4
  • View.INVISIBLE -> O View é invisível, mas ocupará algum espaço no layout

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

Yugandhar Vadlamudi
fonte
0

View.GONE = A visualização não será exibida e o restante das visualizações não levará em consideração sua existência

View.INVISIBLE = A visualização não será exibida, mas ocupará o espaço atribuído no layout

MKH
fonte