Android: differenza tra invisibile e sparito?


477

Qual è la differenza tra invisiblee goneper lo stato di visibilità Visualizza?


26
Quando una vista è sparita, significa che non occupa spazio nel layout. Quando è invisibile, occuperà lo spazio necessario in un layout ma non lo vedi.
DroidBender,

Risposte:


709

INVISIBILE:

Questa vista è invisibile, ma occupa ancora spazio per scopi di layout.

ANDATO:

Questa vista è invisibile e non occupa spazio ai fini del layout.


113
Sembra analogo a display:none& visibility:hiddenin HTML / CSS :-)
anishsane

O nascosto e crollato in Wpf XAML
juliushuck il

1
Se è invisibile, farà clic su è anche disabilitato?
Kuldeep Yadav,

1
@KuldeepYadav sì, sarà sia invisibile che sparito.
steve moretz,

1
solo per futuri lettori curiosi: possiamo ancora usare performItemClick su viste elenco / griglia anche se è invisibile.
Kirking il

264

Dalla documentazione puoi dirlo

View.GONE Questa vista è invisibile e non occupa spazio ai fini del layout.

View.INVISIBLE Questa vista è invisibile, ma occupa ancora spazio per scopi di layout.


Consente di chiarire l'idea con alcune immagini.

Supponi di avere tre pulsanti, come di seguito

inserisci qui la descrizione dell'immagine

Ora se imposti la visibilità del pulsante due come invisibile ( View.INVISIBLE), l'output sarà

inserisci qui la descrizione dell'immagine

E quando imposti la visibilità del pulsante due come scomparso ( View.GONE), l'output sarà

inserisci qui la descrizione dell'immagine

Spero che questo chiarisca i tuoi dubbi.


4
L'idea deve essere cancellata? Sembra abbastanza chiaro per me solo dalla spiegazione.
John Dvorak,

16
@JanDvorak :) Fantastico! Non ho una risposta per la tua domanda. Se ritieni che ciò sia stato molto chiaro per tutti gli utenti, la risposta accettata dovrebbe essere un commento e avere un link al sito della documentazione. Ho ragione?
Pankaj Kumar,

cosa succede se lo uso per edittext. è possibile ottenere il valore da edittext?
Ashish,

32

Per ListView o GridView c'è un'altra differenza, quando la visibilità inizialmente è impostata su

INVISIBILE:

Chiamata la funzione getView () dell'adattatore

ANDATO:

La funzione getView () dell'adattatore non ha chiamato, impedendo così il caricamento delle viste, quando non è necessario


10

INVISIBILE:
la vista deve essere disegnata e richiede tempo.

ANDATO:
la vista non deve essere disegnata.


8
La vista non viene disegnata, viene misurata e strutturata.
Ciroxis,

@cyroxis forse lui / lei significa metodo ondraw!
David,

7

Vorrei aggiungere le risposte giuste e di successo, che se si inizializza una vista con visibilità come View.GONE, la vista potrebbe non essere stata inizializzata e si otterranno alcuni errori casuali.

Ad esempio, se si inizializza un layout come View.GONEe quindi si tenta di avviare un'animazione, dalla mia esperienza ho la mia animazione che funziona in modo casuale volte. A volte sì, a volte no.

Quindi, prima di gestire (ridimensionare, spostare, qualunque cosa) una vista, è necessario iniziarla View.VISIBLEo View.INVISIBLErenderla (disegnarla) sullo schermo, quindi gestirla.


Sì, hai ragione, funziona solo a volte quando la vista èGONE
Suraj Bahadur il

4

quando lo rendi Andato ogni volta della compilazione del programma, il componente viene inizializzato, il che significa che stai rimuovendo il componente dal layout e quando lo rendi invisibile, il componente occuperà lo stesso spazio nel layout ma ogni volta che non devi inizializzarlo .

se si imposta Visibilità = Andato, è necessario inizializzare il componente..come

es. Button _mButton = new Button (questo);

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

quindi ci vorrà più tempo rispetto a Visibilità = invisibile.


4
  • View.INVISIBLE -> La vista è invisibile ma occuperà un po 'di spazio nel layout

  • View.GONE -> La vista non è visibile e non occuperà spazio nel layout


0

View.GONE = La vista non verrà mostrata e il resto delle viste non prenderà in considerazione la sua esistenza

View.INVISIBLE = La vista non verrà mostrata, ma occuperà il suo spazio assegnato nel layout

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.