Android: différence entre invisible et disparu?

477

Quelle est la différence entre invisibleet gonepour le statut de visibilité Afficher?

Rob
la source
26
Lorsqu'une vue a disparu, cela signifie qu'elle ne prend pas de place dans la mise en page. Lorsqu'il est invisible, il prendra la place nécessaire dans une mise en page mais vous ne le voyez tout simplement pas.
DroidBender

Réponses:

709

INVISIBLE:

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

DISPARU:

Cette vue est invisible et ne prend pas de place à des fins de mise en page.

Iñigo
la source
113
Ressemble à display:none& visibility:hiddenHTML / CSS :-)
anishsane
Ou caché et effondré dans Wpf XAML
juliushuck
1
S'il est invisible, cliquez dessus est-il également désactivé?
Kuldeep Yadav
1
@KuldeepYadav oui, il sera à la fois disparu et invisible.
steve moretz
1
juste pour les futurs lecteurs curieux: nous pouvons toujours utiliser performItemClick sur les vues de liste / grille même s'il est invisible.
kiranking le
264

De la documentation, vous pouvez dire que

View.GONE Cette vue est invisible et ne prend pas de place à des fins de mise en page.

View.INVISIBLE Cette vue est invisible, mais elle prend toujours de l'espace à des fins de mise en page.


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

Supposons que vous ayez trois boutons, comme ci-dessous

entrez la description de l'image ici

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

entrez la description de l'image ici

Et lorsque vous définissez la visibilité du bouton deux comme disparu ( View.GONE), la sortie sera

entrez la description de l'image ici

J'espère que cela dissipera vos doutes.

Pankaj Kumar
la source
4
L'idée doit-elle être clarifiée? Cela me semble assez clair uniquement à partir de l'explication.
John Dvorak
16
@JanDvorak :) Génial! Je n'ai pas de réponse à votre question. Si vous pensez que cela était très clair pour tous les utilisateurs, la réponse acceptée devrait être un commentaire et un lien vers le site de documentation. Ai-je raison?
Pankaj Kumar
et si je l'utilise pour edittext. est-il possible d'obtenir la valeur d'edittext?
Ashish
32

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

INVISIBLE:

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 lorsqu'il n'est pas nécessaire

mes
la source
10

INVISIBLE:
La vue doit être dessinée et cela prend du temps.

GONE:
La vue n'a pas besoin d'être dessinée.

twlkyao
la source
8
La vue n'est pas dessinée, elle est mesurée et disposée.
cyroxis
@cyroxis peut-être qu'il / elle veut dire méthode ondraw!
David
7

J'aimerais ajouter aux bonnes réponses, que si vous initialisez une vue avec la visibilité as View.GONE, la vue pourrait ne pas avoir été initialisée et vous obtiendrez des erreurs aléatoires.

Par exemple, si vous initialisez une mise en page au fur View.GONEet à mesure que vous essayez de démarrer une animation, d'après mon expérience, mon animation fonctionne aléatoirement plusieurs fois. Parfois oui, parfois non.

Donc, avant de manipuler (redimensionner, déplacer, peu importe) une vue, vous devez l'initier en tant que View.VISIBLEou la View.INVISIBLErendre (la dessiner) à l'écran, puis la gérer.

Rafael Ruiz Muñoz
la source
Oui, vous avez raison, cela ne fonctionne que parfois lorsque la vue estGONE
Suraj Bahadur
4

lorsque vous le faites disparaître à chaque fois que vous compilez le programme, le composant est initialisé, ce qui signifie que vous supprimez le composant de la mise en page et lorsque vous le rendez invisible, il prendra 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);

cela prendra donc plus de temps que Visibilité = invisible.

kuldeep zala
la source
4
  • View.INVISIBLE -> La vue est invisible mais elle occupera un peu d'espace dans la mise en page

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

Yugandhar Vadlamudi
la source
0

View.GONE = La vue ne s'affichera pas et le reste des vues ne tiendra pas compte de son existence

View.INVISIBLE = La vue ne s'affichera pas, mais elle occupera l'espace qui lui est affecté dans la mise en page

MKH
la source