2011-07-04 10 views

Respuesta

22

El < incluyen /> solo incluirá el contenido XML en el archivo XML de base, como si todo el asunto era más que un solo archivo grande. Es una buena manera de compartir partes de diseño entre diferentes diseños.

El < ViewStub /> es un poco diferente, ya que no se incluye directamente, y no se cargará sólo cuando realmente se utilicen/lo necesita, es decir, cuando se establece su visibilidad a VISIBLE (en realidad visible) o INVISIBLE (todavía no es visible, pero su tamaño ya no es 0). Es una buena optimización porque puede tener un diseño complejo con montones de pequeñas vistas o encabezados en cualquier lugar, y aún así tener su Actividad cargada muy rápido. Una vez que use una de esas vistas, se cargará.

+1

¿Puede establecer la visibilidad de una vista como "verdadera"? ¿No son 'VISIBLE',' INVISIBILE' y 'GONE' las únicas opciones de visibilidad para las vistas? ¿La vista se carga solo cuando la vista es 'VISIBLE', o se cargará cuando no esté 'GONE'? – RestInPeace

+1

@RestInPeace De hecho, no estoy seguro de por qué escribí eso (han pasado 3 años ...). De la documentación: "Cuando la visibilidad se establece en 'VISIBLE' o 'INVISIBLE', se invoca inflate() y este StubbedView se reemplaza en su elemento principal por el recurso de diseño inflado.". Por lo tanto, está inflado cuando la visibilidad está configurada en cualquier cosa excepto 'GONE'. – Gregory

+0

Gracias por la aclaración. – RestInPeace

3

Compartir y reutilizar diseños es muy fácil con Android gracias a la etiqueta, a veces incluso es muy fácil y puede terminar con interfaces de usuario que contienen una gran cantidad de vistas, algunas de las cuales se usan con poca frecuencia. Afortunadamente, Android ofrece un widget muy especial llamado ViewStub, que le ofrece todos los beneficios sin contaminar su interfaz de usuario con vistas poco utilizadas.

A ViewStub es una vista tonta y liviana. No tiene dimensión, no dibuja nada y no participa en el diseño de ninguna manera. Esto significa que ViewStub es muy barato de inflar y muy económico de mantener en una jerarquía de vista. Un ViewStub se puede describir mejor como un include perezoso. El diseño al que hace referencia una ViewStub se infla y agrega a la interfaz de usuario solo cuando así lo decida.

+0

http://android-developers.blogspot.com/2009/03/android-layout-tricks-3-optimize-with.html – Zyoo

0

Otra diferencia importante se relaciona con la disposición de inflado. con esto no es posible cambiar el diseño ya estático inflado en XML, es necesario reemplazar la vista y establecer programáticamente todos los parámetros de diseño. Con esto es posible definir (por ejemplo) alto, ancho, etc. e inflar diferente diseño en tiempo de ejecución

Cuestiones relacionadas