您的位置:首页 > 移动开发 > Android开发

关于Android布局优化(二)

2016-03-31 23:22 337 查看

使用< ViewStub>实现View的延迟加载

之前说道可以使用< include>标签来引用布局,除此之外还可以< ViewStub>标签来实现对View的引用和延迟加载。

实例:

<ViewStub
android:id="@+id/not_show"
android:layout_alignParentBottom="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout="@layout/is_show"/>


is_show就是引用的布局,默认是不显示的,而且大小是0

那怎么显示这个布局呢?

- 首先,需要通过findViewById()找到< ViewStub>

mViewStub = (ViewStub)findViewById(R.id.not_show);


然后使用inflate方法显示引用的View

View showView = mViewStub.inflate();


或者使用

mShowView.setVisibility(View.VISIBLE);//显示引用的布局


之后就可以使用shouView.findViewById()找到引用布局中的组件了

注意:

当< ViewStub>不可见时,它的大小为0;

当< ViewStub>设置为可见或者使用了inflate后,它就不存在了,取而代之的是被inflate的布局,并且会使用< ViewStub>中通过android:inflateId指定的ID给该布局设置ID,所以两次调用inflate会报错。

有人会问这不是很View.GONE的效果差不多吗?

二者的区别是:

< ViewStub>在初始时不显示,只有在显示的时候才会渲染布局。

而View.GONE在初始布局树的时候就已经添加到布局树上了。

所以比较起来,< ViewStub>有更高的效率。

关于Android的布局优化先写到这里,以后有新的了解再补充。

有问题欢迎提问。

也可以加“Android开发经验交流”群: 454430053
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息