wake-up-neo.com

Android: Unterschied zwischen unsichtbar und verschwunden?

Was ist der Unterschied zwischen invisible und gone für den Sichtbarkeitsstatus "Anzeigen"?

433
Rob

UNSICHTBAR:

Diese Ansicht ist unsichtbar, benötigt jedoch noch Platz für Layoutzwecke.

WEG:

Diese Ansicht ist unsichtbar und benötigt keinen Platz für Layoutzwecke.

661
Iñigo

Aus Dokumentation kann man das sagen

View.GONE Diese Ansicht ist unsichtbar und benötigt keinen Platz für Layoutzwecke.

View.INVISIBLE Diese Ansicht ist unsichtbar, beansprucht aber noch Platz für Layoutzwecke.


Lasst uns die Idee mit ein paar Bildern klarstellen.

Angenommen, Sie haben drei Schaltflächen, wie unten

enter image description here

Wenn Sie jetzt die Sichtbarkeit von Button Zwei als unsichtbar festlegen (View.INVISIBLE), dann wird ausgegeben

enter image description here

Und wenn Sie die Sichtbarkeit von Button Zwei als weg eingestellt haben (View.GONE) dann wird ausgegeben

enter image description here

Ich hoffe, dies wird Ihre Zweifel beseitigen.

246
Pankaj Kumar

Bei ListView oder GridView gibt es einen weiteren Unterschied, wenn die Sichtbarkeit anfänglich auf eingestellt ist

UNSICHTBAR:

Die getView () - Funktion des Adapters wird aufgerufen

WEG:

Die getView () - Funktion des Adapters hat nicht aufgerufen, wodurch das Laden von Ansichten verhindert wird, wenn dies nicht erforderlich ist

29
mes

UNSICHTBAR:
Die Ansicht muss gezeichnet werden und es braucht Zeit.

WEG:
Die Ansicht muss nicht gezeichnet werden.

9
twlkyao

Ich möchte zu den richtigen und erfolgreichen Antworten hinzufügen, dass, wenn Sie eine Ansicht mit der Sichtbarkeit View.GONE Initialisieren, die Ansicht möglicherweise nicht initialisiert wurde und Sie einige zufällige Fehler erhalten.

Wenn Sie zum Beispiel ein Layout mit View.GONE Initialisieren und dann versuchen, eine Animation zu starten, habe ich meiner Erfahrung nach meine Animation gelegentlich bearbeitet. Manchmal ja manchmal nein.

Bevor Sie eine Ansicht bearbeiten (Größe ändern, verschieben, was auch immer), müssen Sie sie als View.VISIBLE Oder View.INVISIBLE Initialisieren, um sie auf dem Bildschirm zu rendern (zu zeichnen) und dann zu bearbeiten.

5
  • View.INVISIBLE -> Die Ansicht ist unsichtbar, nimmt jedoch etwas Platz im Layout ein

  • View.GONE -> Die Ansicht ist nicht sichtbar und belegt keinen Platz im Layout

3

wenn Sie es fertigstellen, wird die Komponente bei jeder Kompilierung des Programms initialisiert. Dies bedeutet, dass Sie die Komponente aus dem Layout entfernen. Wenn Sie die Komponente unsichtbar machen, nimmt sie den gleichen Platz im Layout ein, aber jedes Mal, wenn Sie sie nicht initialisieren müssen .

wenn Sie Visibility = Gone setzen, müssen Sie die Komponente initialisieren

zB Button _mButton = neuer Button (this);

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

es wird also mehr Zeit in Anspruch nehmen als bei Sichtbarkeit = unsichtbar.

2
kuldeep zala