Android: Unterschied zwischen unsichtbar und weg?


477

Was ist der Unterschied zwischen invisibleund gonefür den Sichtbarkeitsstatus der Ansicht?


26
Wenn eine Ansicht nicht mehr vorhanden ist, bedeutet dies, dass im Layout kein Platz mehr benötigt wird. Wenn es unsichtbar ist, nimmt es den erforderlichen Raum in einem Layout ein, aber Sie sehen es einfach nicht.
DroidBender

Antworten:


709

UNSICHTBAR:

Diese Ansicht ist unsichtbar, nimmt jedoch für Layoutzwecke Platz ein.

WEG:

Diese Ansicht ist unsichtbar und nimmt für Layoutzwecke keinen Platz ein.


113
Sieht aus wie analog zu display:none& visibility:hiddenin HTML / CSS :-)
anishsane

Oder versteckt und zusammengebrochen in Wpf XAML
juliushuck

1
Wenn es unsichtbar ist, wird das Klicken auch deaktiviert?
Kuldeep Yadav

1
@ KuldeepYadav ja es wird sowohl verschwunden als auch unsichtbar sein.
Steve Moretz

1
Nur für zukünftige neugierige Leser: Wir können performItemClick weiterhin für Listen- / Rasteransichten verwenden, auch wenn es unsichtbar ist.
Kiranking

264

Aus der Dokumentation können Sie das sagen

View.GONE Diese Ansicht ist unsichtbar und nimmt für Layoutzwecke keinen Platz ein.

View.INVISIBLE Diese Ansicht ist unsichtbar, nimmt jedoch für Layoutzwecke Platz ein.


Lassen Sie uns die Idee mit einigen Bildern klären.

Angenommen, Sie haben drei Schaltflächen, wie unten

Geben Sie hier die Bildbeschreibung ein

Wenn Sie nun die Sichtbarkeit von Schaltfläche Zwei als unsichtbar ( View.INVISIBLE) festlegen , wird die Ausgabe ausgeführt

Geben Sie hier die Bildbeschreibung ein

Und wenn Sie die Sichtbarkeit von Button Zwei als weg ( View.GONE) festlegen, wird die Ausgabe ausgeführt

Geben Sie hier die Bildbeschreibung ein

Hoffe, dies wird Ihre Zweifel klären.


4
Muss die Idee geklärt werden? Es scheint mir nur aus der Erklärung klar genug zu sein.
John Dvorak

16
@ JanDvorak :) Großartig! Ich habe keine Antwort auf Ihre Frage. Wenn Sie der Meinung sind, dass dies für alle Benutzer sehr klar war, sollte die akzeptierte Antwort ein Kommentar sein und einen Link zur Dokumentationsseite enthalten. Hab ich recht?
Pankaj Kumar

Was ist, wenn ich es für Edittext benutze? ist es möglich, den Wert von edittext zu erhalten?
Ashish

32

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

UNSICHTBAR:

Die Funktion getView () des Adapters wird aufgerufen

WEG:

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


10

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

GONE:
Die Ansicht muss nicht gezeichnet werden.


8
Die Ansicht wird nicht gezeichnet, sondern gemessen und angelegt.
Cyroxis

@cyroxis vielleicht meint er / sie ondraw Methode!
David

7

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

Wenn Sie beispielsweise ein Layout als initialisieren View.GONEund dann versuchen, eine Animation zu starten, funktioniert meine Animation meiner Erfahrung nach zufällig. Manchmal ja manchmal nein.

Bevor Sie eine Ansicht bearbeiten (Größe ändern, verschieben, was auch immer), müssen Sie sie als View.VISIBLEoder View.INVISIBLEauf dem Bildschirm rendern oder rendern (zeichnen) und dann bearbeiten.


Ja, Sie haben Recht, es funktioniert nur manchmal, wenn die Ansicht istGONE
Suraj Bahadur

4

Wenn Sie es bei jeder Kompilierung des Programms deaktivieren, wird die Komponente initialisiert. Dies bedeutet, dass Sie die Komponente aus dem Layout entfernen. Wenn Sie sie unsichtbar machen, nimmt die Komponente denselben 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);

Daher dauert es im Vergleich zu Sichtbarkeit = unsichtbar länger.


4
  • 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


0

View.GONE = Die Ansicht wird nicht angezeigt und der Rest der Ansichten berücksichtigt ihre Existenz nicht

View.INVISIBLE = Die Ansicht wird nicht angezeigt, nimmt jedoch den zugewiesenen Platz im Layout ein

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.