web-dev-qa-db-fra.com

Android: différence entre invisible et disparu?

Quelle est la différence entre invisible et gone pour le statut de visibilité de la vue?

433
Rob

INVISIBLE:

Cette vue est invisible, mais elle prend toujours de la place pour la mise en page.

DISPARU:

Cette vue est invisible et ne prend aucun espace pour la mise en page.

661
Iñigo

De Documentation vous pouvez dire que

View.GONE Cette vue est invisible et ne nécessite aucun espace pour la mise en page.

View.INVISIBLE Cette vue est invisible, mais elle prend toujours de la place pour la mise en page.


Permet de clarifier l'idée avec quelques images.

Supposons que vous avez trois boutons, comme ci-dessous

enter image description here

Maintenant, si vous définissez la visibilité du bouton 2 comme invisible (View.INVISIBLE), la sortie sera alors

enter image description here

Et lorsque vous définissez la visibilité du bouton deux comme caduque (View.GONE), la sortie est alors

enter image description here

J'espère que cela effacera vos doutes.

246
Pankaj Kumar

Pour ListView ou GridView, il existe une autre différence lorsque la visibilité initialement définie sur

INVISIBLE:

La fonction getView () de l'adaptateur appelée

DISPARU:

La fonction getView () de l'adaptateur n'a pas appelé, empêchant ainsi le chargement des vues, lorsque cela est inutile.

29
mes

INVISIBLE:
Il faut dessiner la vue et cela prend du temps.

DISPARU:
La vue ne doit pas être dessinée.

9
twlkyao

J'aimerais ajouter à droite et aux réponses correctes que si vous initialisez une vue avec une visibilité avec le nom View.GONE, celle-ci n'aurait peut-être pas été initialisée et vous obtiendrez des erreurs aléatoires.

Par exemple, si vous initialisez une mise en page avec le nom View.GONE et que vous essayez ensuite de démarrer une animation, mon expérience fonctionne de manière aléatoire. Parfois oui, parfois non.

Ainsi, avant de manipuler (redimensionner, déplacer, peu importe) une vue, vous devez l’initialiser sous le nom View.VISIBLE ou View.INVISIBLE pour la restituer (la dessiner) à l’écran, puis la gérer.

5
Rafael Ruiz Muñoz
  • View.INVISIBLE -> La vue est invisible mais elle occupera de l'espace dans la présentation

  • View.GONE -> La vue n'est pas visible et elle n'occupera aucun espace dans la mise en page.

3

lorsque vous le faites. Chaque fois que vous compilez un programme, le composant est initialisé, ce qui signifie que vous supprimez le composant de la mise en page. Lorsque vous le rendez invisible, il prend le même espace dans la mise en page, mais chaque fois que vous n'avez pas besoin de l'initialiser. .

si vous définissez Visibility = Gone, vous devez initialiser le composant..like

par exemple Button _mButton = new Button (this);

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

il faudra donc plus de temps que Visibility = invisible.

2
kuldeep zala