Android: différence entre invisible et disparu?


477

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


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.


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.


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


10

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

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


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.


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.


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


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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.