所以我可以在运行时给ViewStub充气。假设我想让它消失,然后根据发生的一些事件再次膨胀(例如,根据用户在屏幕上选择的内容进行膨胀和放气的工具栏)。
我可以使用View.setVisibility(View.GONE)....还有其他方法吗?
或者我在这里做错了什么?
谢谢! :)
答案 0 :(得分:33)
充气布局可能很昂贵,尤其是在旧设备上。将ViewStub视为更多的视图子树的延迟加载机制,可能会或可能不会扩展,而不是在运行时交换视图层次结构的各个部分。一旦充气,在VISIBLE / GONE之间交换没有任何问题。 GONE将使框架在昂贵的遍历期间跳过该子树。
只要您不需要充气视图使用的内存,就是这样。将可见性设置为GONE不会释放任何内存;它只是将视图标记为布局和绘图目的。要释放viewstub的膨胀视图的内存,您实际上应该删除膨胀的视图并使用新的视图库再次替换它以供将来使用。
答案 1 :(得分:0)
是的,你可以随时删除。我刚刚完成了。
ViewStub stub = findById(...);
View v = stub.inflate();
并设置任何事件的视图可见性。
v.setVisibility(View.GONE);