ViewStub
参考:
- https://blog.csdn.net/Demon_T/article/details/113941806
- https://blog.csdn.net/a740169405/article/details/50351013
- ViewStub 实现懒加载,针对 visible 在初始化时不显示的布局
ViewStub 优势
- ViewStub可以做到按需加载一个布局,我们可以控制它加载的时机,而不是在Activity的onCreate方法中去加载.即懒加载
- 它存在于视图层级中,但只会在setVisibility和inflate方法调用只会才会填充视图,所以不会影响初始化加载速度。
合理使用ViewStub可以起到优化渲染功效
- 将复杂的视图放入ViewStub中,不在初始化中加载
特点
- ViewStub是一个继承了View类的视图。
- ViewStub是不可见的,实际上是把宽高都设置为0
- 可以通过布局文件的android:inflatedId或者调用ViewStub的setInflatedId方法为懒加载视图的跟节点设置ID
- ViewStub视图在首次调用setVisibility或者inflate方法之前,一直存在于视图树中
- 只需要调用ViewStub的setVisibility或者inflate方法即可显示懒加载的视图
- 调用setVisibility或者inflate方法之后,懒加载的视图会把ViewStub从父节点中替换掉
- ViewStub的inflate只能被调用一次,第二次调用会抛出异常,setVisibility可以被调用多次,但不建议这么做(后面说原因)
- 为ViewStub赋值的android:layout_属性会替换待加载布局文件的根节点对应的属性
- inflate方法会返回待加载视图的根节点