http://www.cnblogs.com/xirihanlin/archive/2010/04/28/1723291.html
Android API 中文(14) —— ViewStub
http://www.cnblogs.com/over140/archive/2010/10/18/1853989.html

多亏了<include />标签,在Android里,很容易就能做到共享和重用UI组件。在Android开发中,很容易就能创建出复杂的UI结构,结果呢,用了很多的View,且其中的一些很少使用。针对这种情况,谢天谢地,Android还为我们提供了一个特别的构件——ViewStub,它可以使你充分享受<include />的好处而不会造成无用View的浪费。

ViewStub是一个看不见的,轻量级的View。它没有尺寸,也不会绘制以及以某种形式参与到布局中来。这意味着ViewStub去inflate以及保留在View层次中的代价是很廉价的。ViewStub最佳的描述称之为“懒惰的include”。ViewStub中引用的布局只在你想添加到UI上时才会显示。

为了使用ViewStub,你所有需要做的是指定android:id特性,便于以后inflate,指定android:layout特性,引用布局文件。ViewStub还允许你使用第三个特性,android:inflatedId,你可以使用它来重写包含的布局文件中的根元素的id。最后,在ViewStub上设定的layout_gravity参数将会应用到包含的布局文件的底部。
这里有个例子:
<ViewStub  android:id="@+id/stub_import"  android:inflatedId="@+id/panel_import"  android:layout="@layout/progress_overlay"  android:layout_width="fill_parent"  android:layout_height="wrap_content"  android:layout_gravity="bottom" />

当你准备inflate ViewStub时,调用inflate()方法即可。你还可以设定ViewStub的Visibility为VISIBLE或INVISIBLE,也会触发inflate。注意的是,使用inflate()方法能返回布局文件的根View:
((ViewStub) findViewById(R.id.stub_import)).setVisibility(View.VISIBLE);// orView importPanel = ((ViewStub) findViewById(R.id.stub_import)).inflate();

有一点需要记住的是:当ViewStub inflate后,这个ViewStub就从View层次中移除了。因此,没有必要保留一个对ViewStub的引用(如在类的字段里)。
ViewStub是快捷编程与高效编程之间的产物。与其手动的inflate View并在运行时添加到View层次上,不如简单的使用ViewStub。它相当“廉价”且易于使用。ViewStub唯一的缺点是现在不支持<merge />标签。

viewStub,requestFocus,merge,include的用法:
http://breaklayer.iteye.com/blog/883745

更多相关文章

  1. 箭头函数的基础使用
  2. NPM 和webpack 的基础使用
  3. Python list sort方法的具体使用
  4. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  5. android一句话实现APP自动更新(带通知栏)
  6. android之HttpURLConnection
  7. android apk执行shell脚本
  8. Android(安卓)MVVM结合DataBinding的简单实用(Android(安卓)studi
  9. android神器Stetho调试

随机推荐

  1. (血的经验!!)Android(安卓)Studio 如何导入别
  2. 修改apk调用蓝牙无明确提示
  3. Introducing home screen widgets and th
  4. android app 与电脑wifi通信(二)
  5. 图片内存溢出处理
  6. Android:使用TextureView预览Camera
  7. android 动态创建控件并设置布局
  8. Android下的Dialog
  9. How to use HTC on Ubuntu 12.04 to test
  10. android SDK/APP 涉及用户隐私需要关注的