How to "deflate" a ViewStub?
So I can inflate a ViewStub at runtime. Let's say I want to make it disappear and then maybe inflate again depending on 开发者_如何学JAVAsome event occurring (for example, a toolbar that inflates and deflates according to what the user selects on screen).
I can use View.setVisibility(View.GONE).... is there any other way?
Or am I doing something wrong here?
Thanks! :)
Inflating layouts can be expensive, especially on older devices. Think of ViewStub as more of a lazy-loading mechanism for view subtrees that may or may not ever get expanded rather than a way to swap out sections of a view hierarchy at runtime. Once inflated, there's nothing wrong with swapping between VISIBLE/GONE. GONE will make the framework skip that subtree during expensive traversals.
This is true as long as you don't need the memory used by the inflated view. Setting visibility to GONE doesn't release any memory whatsoever; it only marks the view as gone for layout and drawing purposes. To release the memory of the viewstub's inflated view, you would have actually to remove the inflated view and replace it again with a new viewstub for future use.
Yes you can remove whenver you want .i have done it just now.
ViewStub stub = findById(...);
View v = stub.inflate();
and set view visibility on any event.
v.setVisibility(View.GONE);
精彩评论