Android:ViewStub

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来控制它了。

posted @ 2013-10-23 16:57  slowalker  阅读(157)  评论(0编辑  收藏  举报