ViewStub使用场景
在开发项目中经常碰到一些在指定条件下才需要加载的layout,比如网络异常页面.你可以仅在需要的时候载入它们,提高 UI 渲染速度。这时就可以使用ViewStub !!!
ViewStub使用方法
ViewStub 通过设置 android:layout 属性来指定需要被 inflate 的 Layout 类型。
xml中:
<ViewStub
android:id="@+id/vs_loading_abnormity"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout="@layout/loading_hint" />
注意: android:layout_width和android:layout_height必须设置 不然不会显示. 这是与include标签不一样的地方,include是可以用layout里的布局属性.而ViewStub只能自己布局属性.
代码中:
ViewStub vsLoadingHint = (ViewStub) window.findViewById(vs_loading_hint);
if (vsLoadingHint != null) {
hintView = vsLoadingHint.inflate();
}
注意: inflate()只能执行一次,所以要多处调用时注意判断是否已加载.由于ViewStub执行inflate后被@layout/loading_hint替换,故vsLoadingHint再次findViewById时会返回null.所以用vsLoadingHint != null来判断是否inflate().