Android: ¿Diferencia entre View.GONE y View.INVISIBLE?

4 minutos de lectura

Avatar de usuario de Rob
Robar

Cuál es la diferencia entre View.INVISIBLE y View.GONE para el estado de visibilidad Ver?

  • Cuando desaparece una vista, significa que no ocupa ningún espacio en el diseño. Cuando es invisible, ocupará el espacio necesario en un diseño, pero simplemente no lo verá.

    – DroidBender

    19 de julio de 2012 a las 8:16

INVISIBLE:

Esta vista es invisible, pero aún ocupa espacio para fines de diseño.

DESAPARECIDO:

Esta vista es invisible y no ocupa espacio para el diseño.

  • Parece análogo a display:none & visibility:hidden en HTML/CSS 🙂

    – anishsano

    30 de enero de 2014 a las 6:18


  • O a Oculto y Contraído en Wpf XAML

    – juliushuck

    19 de agosto de 2018 a las 1:00

  • Si es invisible, ¿hará clic en que también está deshabilitado?

    – Kuldeep Yadav

    2 de noviembre de 2018 a las 1:09

  • @KuldeepYadav, sí, será tanto invisible como desaparecido.

    –Steve Moretz

    6 de febrero de 2019 a las 11:26

  • solo para futuros lectores curiosos: aún podemos usar performItemClick en vistas de lista/cuadrícula incluso si es invisible.

    – kiranking

    22 de febrero de 2019 a las 21:12

Avatar de usuario de Pankaj Kumar
Pankaj Kumar

De Documentación puedes decir eso

View.GONE Esta vista es invisible y no ocupa espacio para el diseño.

Ver.INVISIBLE Esta vista es invisible, pero aún ocupa espacio para fines de diseño.


Aclaremos la idea con algunas imágenes.

Suponga que tiene tres botones, como a continuación

ingrese la descripción de la imagen aquí

Ahora, si configura la visibilidad del Botón Dos como invisible (View.INVISIBLE), entonces la salida será

ingrese la descripción de la imagen aquí

Y cuando configuras la visibilidad del Botón Dos como desaparecido (View.GONE) entonces la salida será

ingrese la descripción de la imagen aquí

Espero que esto despeje tus dudas.

  • ¿Hay que aclarar la idea? Me parece lo suficientemente claro solo por la explicación.

    – John Dvorak

    12 de marzo de 2015 a las 5:59

  • @JanDvorak 🙂 ¡Genial! No tengo respuesta para tu pregunta. Si cree que esto fue muy claro para todos los usuarios, entonces la respuesta aceptada debe ser un comentario y tener un enlace al sitio de documentación. ¿Estoy en lo correcto?

    – Pankaj Kumar

    12 de marzo de 2015 a las 6:09

  • ¿Qué pasa si lo uso para editar texto? ¿Es posible obtener el valor de edittext?

    – Cenizo

    16 de julio de 2019 a las 11:28

  • Su respuesta es mejor que la respuesta aceptada.

    – Samudra Ganguly

    25 de mayo de 2021 a las 6:42

  • la imagen habla más fuerte que las palabras

    – Gaju Kollur

    4 de julio de 2021 a las 16:24

Para ListView o GridView hay otra diferencia, cuando la visibilidad se establece inicialmente en

INVISIBLE:

Llamada a la función getView() del adaptador

DESAPARECIDO:

La función getView () del adaptador no llamó, lo que impidió que se cargaran las vistas, cuando no es necesario

INVISIBLE:
La vista tiene que ser dibujada y toma tiempo.

DESAPARECIDO:
La vista no tiene que ser dibujada.

Me gustaría agregar a las respuestas correctas y exitosas, que si inicializa una vista con visibilidad como View.GONEes posible que la vista no se haya inicializado y obtendrá algunos errores aleatorios.

Por ejemplo, si inicializa un diseño como View.GONE y luego intenta iniciar una animación, según mi experiencia, tengo mi animación funcionando aleatoriamente. Aveces si aveces no.

Entonces, antes de manejar (redimensionar, mover, lo que sea) una vista, debe iniciarla como View.VISIBLE o View.INVISIBLE para representarlo (dibujarlo) en la pantalla y luego manejarlo.

  • Sí, tienes razón, funciona solo a veces cuando la vista es GONE

    – Suraj Bahadur

    17 de julio de 2019 a las 7:58

Avatar de usuario de Ramesh R
ramesh r

cuando hace que se vaya cada vez que se compila el programa, el componente se inicializa, lo que significa que está eliminando el componente del diseño y cuando lo hace invisible, el componente ocupará el mismo espacio en el diseño, pero cada vez que no lo haga necesita inicializarlo.

si establece Visibilidad = Desaparecido, entonces debe inicializar el componente … como

p.ej

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

por lo que llevará más tiempo en comparación con Visibilidad = invisible.

  • Sí, tienes razón, funciona solo a veces cuando la vista es GONE

    – Suraj Bahadur

    17 de julio de 2019 a las 7:58

Avatar de usuario de Yugandhar Vadlamudi
Yugandhar Vadlamudi

  • Ver.INVISIBLE-> La vista es invisible pero ocupará algo de espacio en el diseño

  • View.GONE->La vista no es visible y no ocupará ningún espacio en el diseño

¿Ha sido útil esta solución?