ViewStub 详解(译文)

官方原文地址

https://developer.android.com/reference/android/view/ViewStub.html

date:2017.07.23


一个ViewStub 是一个可见的,可设置大小的View,它可以在运行的时候懒加载布局资源(layout -> View),可以提升一定的性能.让界面更流畅.
当一个ViewStub 被设置了可见的或者被调用了 inflate() 方法,那么ViewStub 指定的布局文件就会被加载(layout -> View).下图中的
android:inflatedId=”@+id/subTree”
android:layout=”@layout/mySubTree”
两句代码就是指定懒加载的布局文件,并且指定了id
当布局资源被加载,整个ViewStub的地方就会被替换成为加载出来的View.ViewStub会从父容器中移除,并且把加载好的View替换ViewStub原有的位置.并且View的布局参数就是ViewStub的布局参数(LayoutParameter)也
如果目标layout上根布局你写了一个id,然后在ViewStub使用中又使用了
android:inflatedId=”@+id/subTree”
那么布局文件中的id会被inflatedId的覆盖哦,下面举例使用方式:

<ViewStub android:id="@+id/stub"
          android:inflatedId="@+id/subTree"
          android:layout="@layout/mySubTree"
          android:layout_width="120dip"
          android:layout_height="40dip" />

上面ViewStub使用了一个id “stub”,你可以在运行的时候像平常一样使用findViewById找到ViewStub.当ViewStub指定的布局被加载,并且完成View(懒加载的)替换ViewStub的地方之后,View(懒加载的)的id “subTree” 就可以通过findViewById被找到了,这个View最终被分配的宽和高就是上面的120di p和 40dip.最好的方式去使用ViewStub的代码如下:

ViewStub stub = findViewById(R.id.stub);
View inflated = stub.inflate();

当 inflate() 方法被调用,ViewStub被懒加载出来的View替换啦,并且直接返回,你就可以直接拿到View的引用了避免了一次findViewById方法的执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值