ViewStub

Explicación del concepto de ViewStub.

Fuente: developer.android
Fuente: developer.android

DEFINICIÓN

Hereda de View.

ViewStub es una View invisible y con tamaño nulo que puede utilizarse para inicializar (inflate) recursos de layout cuando éstos se vayan a utilizar (lazily) y no antes. Esto aumenta la eficiencia en el uso de los recursos de la App.

Cuando un ViewStub se hace visible o cuando la función inflate() es invocada, el recurso de Layout se inicializa.

En ese momento, el ViewStub se reemplaza a sí mismo en el Padre por el Layout inicializado. Estas Views deben estar contenidas en un archivo de Layout propio y se define el Layout con el atributo android:layout.

ViewStub solo vive hasta que setVisibility(int) o inflate() son invocadas. La View inicializada se añade al padre con los parámetros de Layout que ViewStub tuviera.

Se puede definir el ID de la View inicializada utilizado la propiedad android:inflatedId.

EJEMPLO

A continuación vamos a utilizar el Layout que hemos utilizado en la entrada de ViewPager2 y lo vamos a inicializar al pulsar un botón.

Para ello necesitamos desarrollar 3 archivos:

  • MainActivity.kt

  • activity_main.xml

  • page_inflatable.xml

Empezamos con el desarrollo del page_inflatable.xml. En este archivo de Layout se va a añadir el contenido que se inicializará tras pulsar el botón. Es un Layout reutilizado de la entrada antes mencionada:

Básicamente muestra la imagen de James Sunderland, el sexo, el juego en el que participa como personaje y un texto de ejemplo donde estaría la descripción.

Después desarrollamos el activity_main.xml. En este archivo lo que se va a definir es un ViewStub y un botón que cuando se pulse inicializará el Layout definido en el ViewStub.

Por último desarrollamos un listener en el MainActivity.kt que le diga al botón que al ser pulsado infle o inicialice el Layout y cambie su visibilidad a GONE para no afectar al Layout que se acaba de inicializar:

Ejemplo de ViewStub

Last updated