Android按需加载视图之ViewStub

本文介绍了Android开发中如何使用ViewStub进行按需加载布局,特别是在网络异常等特定条件下加载layout的情况。ViewStub通过设置android:layout属性指定要inflate的Layout类型,以提高UI渲染速度。在XML中,需要设置宽度和高度,而在代码中,要注意inflate()方法只能执行一次,并通过判断ViewStub对象是否为null来确定是否已经加载过。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    • 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().

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值