2012-07-19 9 views

Odpowiedz

539

NIEWIDOCZNE:

Pogląd ten jest niewidoczny, ale nadal zajmuje miejsce w celach układu.

GONE:

Pogląd ten jest niewidoczny i nie ponosi żadnej przestrzeni dla celów układu.

+86

Wygląda jak analogiczny do 'display: none' &' visibility: hidden' w HTML/CSS :-) – anishsane

26

Dla ListView lub GridView istnieje jeszcze jedna różnica, gdy widzialność początkowo ustawiona na

NIEWIDOCZNE:

adaptera getView function() nazywa

GONE:

Ad adaptera Funkcja tView() nie zadzwonił, zapobiegając w ten sposób widoki na obciążenia, gdy jest to konieczne

196

Od Documentation można powiedzieć, że

View.GONE Pogląd ten jest niewidoczny, a nie zajmuje on żadnej przestrzeni dla celów układu.

View.INVISIBLE Pogląd ten jest niewidoczny, ale nadal zajmuje miejsce w celach układu.


Pozwala jasny pomysł z niektórych zdjęć.

Załóżmy, że masz trzy przyciski, jak poniżej

enter image description here

Teraz, jeśli ustawić widoczność przycisku Two jako niewidzialnego (View.INVISIBLE), to wyjście będzie

enter image description here

I kiedy ustawić widoczność przycisku dwóch AS gone (View.GONE) wtedy wyjście będzie

enter image description here

nadzieję, że to wyczyścić wątpliwości.

+3

Czy pomysł musi zostać wyczyszczony? Wydaje mi się to wystarczająco jasne, po prostu z wyjaśnienia. –

+12

@JanDvorak :) Świetnie! Nie mam odpowiedzi na twoje pytanie. Jeśli uważasz, że jest to bardzo jasne dla wszystkich użytkowników, zaakceptowana odpowiedź powinna być komentarzem i mieć link do strony z dokumentacją. Mam rację? –

+10

Dzięki @PankajKumar dla przykładu. –

8

INVISIBLE:
Widok musi być narysowany i zajmuje dużo czasu.

GONE:
Widok nie musi być narysowany.

+7

Widok nie jest rysowany, jest mierzony i rozplanowany. – cyroxis

+0

@cyroxis może on/ona oznacza metodę ondraw! – David

4

Chciałbym dodać poprawne i udane odpowiedzi, że jeśli zainicjalizujesz widok z widocznością jako View.GONE, widok mógł nie zostać zainicjalizowany i dostaniesz losowe błędy.

Na przykład, jeśli zainicjujesz układ jako View.GONE, a następnie spróbujesz rozpocząć animację, z mojego doświadczenia wynika, że ​​moja animacja działa losowo razy. Czasem tak, czasem nie.

Zanim przejdziemy do obsługi (zmiana rozmiaru, przesunięcie, cokolwiek) widoku, należy go zainicjować jako View.VISIBLE lub View.INVISIBLE, aby go wyrenderować (narysować) na ekranie, a następnie obsłużyć.

1

Kiedy to zrobisz Po wykonaniu każdej kompilacji programu komponent zostanie zainicjalizowany, co oznacza, że ​​usuwasz komponent z układu, a kiedy go nie widzisz, komponent będzie zajmował to samo miejsce w układzie, ale za każdym razem, gdy to zrobisz trzeba go zainicjować.

jeśli ustawisz widoczność = Przeminęło potem trzeba zainicjować component..like

np Przycisk _mButton = nowy przycisk (this);

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

, więc zajmie to więcej czasu niż widoczność = niewidoczna.

3
  • View.INVISIBLE -> Widok jest niewidoczny, ale będzie zajmują trochę miejsca w układzie

  • View.GONE -> widok nie jest widoczna i nie zajmie żadnego miejsca w układzie

Powiązane problemy