2012-07-19 20 views
349

Qual è la differenza tra invisible e gone per lo stato di visibilità Visualizza?Android: differenza tra invisibile e andato?

+18

Quando una View è andato, significa che non occupa spazio nel layout. Quando è invisibile, prenderà la stanza necessaria in un layout ma semplicemente non la vedrai. – DroidBender

risposta

539

INVISIBILE:

Questo punto di vista è invisibile, ma ci vuole ancora spazio per il layout.

GONE:

Questo punto di vista è invisibile, e non ci vuole alcuno spazio per il layout.

+86

Sembra analogo a 'display: none' e' visibility: hidden' in HTML/CSS :-) – anishsane

26

Per ListView o GridView c'è un altro differenza, quando la visibilità inizialmente impostato

INVISIBLE: funzione

GetView dell'adattatore() chiamato

GONE:

Adattatore ge Funzione Tview() non ha chiamato, impedendo così una vista da caricare, quando non è necessario

196

Da Documentation si può dire che

View.GONE Questo punto di vista è invisibile, e non richiede spazio per gli scopi di layout .

View.INVISIBLE Questo punto di vista è invisibile, ma ci vuole ancora spazio per il layout.


Consente chiara l'idea con alcune immagini.

Supponiamo di avere tre pulsanti, come qui di seguito

enter image description here

Ora, se si imposta la visibilità di Button Due invisibile (View.INVISIBLE), poi uscita sarà

enter image description here

E quando si imposta la visibilità di Button Due come andato (View.GONE) allora l'uscita sarà

enter image description here

Spero che questo sarà chiarire i vostri dubbi.

+3

L'idea deve essere cancellata? Mi sembra abbastanza chiaro solo dalla spiegazione. –

+12

@JanDvorak :) Ottimo! Non ho una risposta per la tua domanda. Se ritieni che questo 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? –

+10

Grazie a @PankajKumar per l'esempio. –

8

INVISIBILE:
La vista deve essere disegnata e richiede tempo.

GONE:
La vista non deve essere disegnata.

+7

La vista non viene disegnata, viene misurata e esposta. – cyroxis

+0

@cyroxis forse lui/lei mezzo metodo ondraw! – David

4

Vorrei aggiungere alle risposte corrette 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.GONE e quindi si tenta di avviare un'animazione, dalla mia esperienza ho ottenuto il mio animazione in modo casuale volte. A volte sì, a volte no.

Quindi, prima di maneggiare (il ridimensionamento, spostamento, qualunque sia) una vista, è necessario init come View.VISIBLE o View.INVISIBLE per renderlo (disegnare) nello schermo, e poi gestirlo.

1

quando lo si fa Andato ogni volta che si compila il programma il componente viene inizializzato che significa che si rimuove il componente dal layout e quando lo si rende invisibile il componente occuperà lo stesso spazio nel layout ma ogni volta che non lo si è necessario inizializzarlo.

se si imposta Visibilità = Andato poi si deve inizializzare il component..like

ad esempio Button _mButton = new Button (questo);

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

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

3
  • View.INVISIBLE -> The View è invisibile ma occuperà po 'di spazio nel layout

  • View.GONE -> The View non è visibile e non sarà occupare qualsiasi spazio nel layout

Problemi correlati