ViewStub
在开发应用程序时,经常会遇到这样的情况:需要运行时动态地根据条件决定显示哪个View或某个布局。
解决方法1:把可能用到的View都写在上面,通过动态地设置View.GONE来进行控制。
解决方法2:使用android.view.ViewStub实现。
方法1逻辑简单而且控制起来比较灵活。但是它的缺点是耗费资源,即便初始时View的可见性为GONE,但是
在inflate布局的时候View仍然会被inflate,即:仍然创建对象,仍然会初始化属性等,会消耗内存等资源。
推荐的做法是使用android.view.ViewStub。ViewStub是一个轻量级的View。它是一个看不见的,不占布
局位置,占用资源非常小的控件。可以为ViewStub指定一个布局,在inflate布局的时候,只有ViewStub会被初
始化,然后当ViewStub被设置为可见或者调用ViewStub.inflate()的时候,ViewStub所指向的布局就会被、、
inflate和实例化,然后ViewStub的布局属性都会被转移到它所指向的布局。这样,就可以使用ViewStub来方便
的在运行时决定要不要显示某个布局。
相关限制:
ViewStub只能Inflate一次,之后ViewStub对象会被置空。换句话说,就是某个ViewStub被指定的布局
inflate之后,就不会在通过ViewStub来控制它了。