android - ¿Cómo “desinflar” un ViewStub?
deflate inflate (2)
Inflar los diseños puede ser costoso, especialmente en dispositivos más antiguos. Piense en ViewStub como un mecanismo de carga lenta para subárboles de vista que pueden expandirse o no, en lugar de una manera de intercambiar secciones de una jerarquía de vistas en tiempo de ejecución. Una vez inflado, no hay nada de malo en cambiar entre VISIBLE / GONE. GONE hará que el marco omita ese subárbol durante recorridos costosos.
Esto es cierto siempre y cuando no necesite la memoria utilizada por la vista inflada. Establecer la visibilidad en GONE no libera ningún tipo de memoria; solo marca la vista como pasada para fines de diseño y dibujo. Para liberar la memoria de la vista inflada del viewstub, tendría que eliminar la vista inflada y reemplazarla nuevamente con un nuevo viewstub para uso futuro.
Así que puedo inflar un ViewStub en tiempo de ejecución. Digamos que quiero hacer que desaparezca y luego inflar de nuevo dependiendo de algún evento que ocurra (por ejemplo, una barra de herramientas que se infla y desinfla según lo que el usuario selecciona en la pantalla).
Puedo usar View.setVisibility (View.GONE) .... ¿hay alguna otra forma?
¿O estoy haciendo algo mal aquí?
¡Gracias! :)
Sí, puedes eliminarlo cuando quieras. Lo he hecho justo ahora.
ViewStub stub = findById(...);
View v = stub.inflate();
y configurar la visibilidad de la vista en cualquier evento.
v.setVisibility(View.GONE);