1 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
在Android中可以很容易使用<include />标签复用布局,可是当使用<include />标签引入了一些复杂控件时,有些控件在实际的使用过程中,很少会使用它,这样以来会降低页面加载的速度。针对这样的情况,可以使用Android 提供<ViewStub />标签进行优化。 <ViewStub />标签是一个轻量级的View,它不会占据任何空间,也不参与布局的计算与绘制,只是在控件树中做一个最简单的占位符,只有在确实需要使用<ViewStub />标签引用的布局时,才会去加载布局。把这种行为称之为延迟加载最贴切不过了。在第四章中,讲解ListView绑定EmptyView的时候我们曾经使用过ViewStub,也做过简单介绍。 在使用ViewStub时,通常需要给它设置以下三个属性: 1、android:id 与其他控件一样,ViewStub也有id属性,根据它可以查找到ViewStub 2、android:layout 指向ViewStub引用的布局,与include标签的laytout属性类似 3、android:inflateId通过它能覆盖引用的布局文件根节点的id,与include标签的id属性类似。 下面的xml代码显示了ViewStub的使用方法:
在需要加载ViewStub引用的布局时,只需要调用它的inflate()方法即可,也可以通过改变它的visibility属性让ViewStub自动加载布局文件。 使用ViewStub的inflate()方法加载布局文件时,能够返回布局的根节点,如果需要操作布局的根节点,最好使用inflate()方法加载布局文件。 Java代码如下:
以下是本章Demo中ViewStub的使用方式:
下面通过本章的Demo对ViewStub进行练习,Demo中是一个简单的搜索界面,当点击搜索按钮后,布局中下方的ViewStub就会显示并显示进度条的提示,不进行搜索或者搜索完毕则不显示ViewStub。 JAVA代码如下:
|
Android中关于布局文件延迟加载控件ViewStub
最新推荐文章于 2021-05-26 19:39:56 发布