it-swarm.dev

Android: rozdíl mezi neviditelným a pryč?

Jaký je rozdíl mezi invisible a gone ve stavu viditelnosti Zobrazit?

425
Rob

NEVIDITELNÝ:

Toto zobrazení je neviditelné, ale stále potřebuje prostor pro účely rozvržení.

PRYČ:

Toto zobrazení je neviditelné a nezabírá žádné místo pro účely rozvržení.

654
Iñigo

Z Dokumentace to můžete říct

Pohled.GONE Toto zobrazení je neviditelné a nezabírá žádné místo pro účely rozvržení.

View.INVISIBLE Toto zobrazení je neviditelné, ale stále potřebuje prostor pro účely rozvržení.


Umožní vám objasnit myšlenku pomocí některých obrázků.

Předpokládejme, že máte tři tlačítka, jako níže

enter image description here

Pokud nyní nastavíte viditelnost tlačítka dva jako neviditelné (View.INVISIBLE), bude výstup

enter image description here

A když nastavíte viditelnost tlačítka dvě jako pryč (View.GONE), výstup bude

enter image description here

Doufám, že to odstraní vaše pochybnosti.

243
Pankaj Kumar

Pro ListView nebo GridView je další rozdíl, když je viditelnost původně nastavena na

NEVIDITELNÝ:

Volána funkce getView () adaptéru

PRYČ:

Funkce getView () adaptéru nezavolala, a tak zabránila načtení pohledů, když to není nutné

29
mes

NEVIDITELNÝ:
Pohled musí být vypracován a vyžaduje čas.

PRYČ:
Pohled nemusí být nakreslen.

9
twlkyao

Chtěl bych přidat ke správným a úspěšným odpovědím, že pokud inicializujete pohled viditelným jako View.GONE, pohled nemohl být inicializován a dostanete nějaké náhodné chyby.

Například pokud inicializujete rozvržení jako View.GONE a potom se pokusíte spustit animaci, z mé zkušenosti mám animaci pracovat náhodně. Někdy ano, někdy ne.

Takže před zpracováním (změna velikosti, přesun, cokoli) pohledu musíte jej spustit jako View.VISIBLE nebo View.INVISIBLE, abyste jej vykreslili (nakreslili) na obrazovce a poté s ním zacházeli.

4
Rafael Ruiz Muñoz
  • View.INVISIBLE -> Pohled je neviditelný, ale zabírá určitý prostor v rozvržení

  • View.GONE -> Pohled není viditelný a nezabírá žádné místo v rozvržení

3

když to uděláte Pryč při každém kompilaci programu se komponenta inicializuje, to znamená, že odebíráte komponentu z rozvržení a když ji učiníte neviditelnou, bude mít v rozvržení stejný prostor, ale pokaždé, když ji nepotřebujete inicializovat .

pokud nastavíte Viditelnost = Pryč, pak musíte inicializovat komponentu ... jako

např. Button _mButton = new Button (this);

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

takže to zabere více času ve srovnání s Visibility = neviditelným.

2
kuldeep zala