这一篇是接着上面的include标签的例子来讲的,地址
上一篇的布局中间就用了viewstub这个控件,现在来说一下其作用和用法
"
ViewStub 是一个不可见的,大小为0的View,最佳用途就是实现View的延迟加载,避免资源浪费,在需要的时候才加载View
需要注意的是,加载view之后,viewstub本身就会被新加载进来的view替换掉
上代码了,看完就理解了
acitivity_main.xml
其中inflatedId就是新加载进来的view的id,如果需要获取这个view,就要用这个inflatedId,原来的id已经被取代了
而layout就是要加载进来的布局,代码如下
pic_view.xml
里面只放了一张图片
MainActivity.java
①inflate()被调用时, 被加载的视图替代viewstub并且返回自己的视图对象。这使得应用程序不需要额外执行findViewById()来获取所加载的视图的引用
②句不需要,如果用到setvisibility的话,那么①②两句顺序不可颠倒,否则报错
java.lang.IllegalStateException:ViewStub must have a non-null ViewGroup viewParent,因为viewstub不能反复inflate,只能inflate一次,setVisibility会间接调用inflate
①句 获取到加载进来的pic_view,使得应用程序不需要额外执行findViewById()来获取加载视图的引用,如果要自己获取的话,id要用inflateid
③句 这里view将会是null,因为viewstub被替换掉,pic_stub的id已经不存在了
④句 用inflateid获取到加载进来的view正常
作者:jason0539
微博:
博客:(转载请说明出处)