布局技巧:使用ViewStub
多亏了<include />标签,在Android里,很容易就能做到共享和重用UI组件。在Android开发中,很容易就能创建出复杂的UI结构,结果呢,用了很多的View,且其中的一些很少使用。针对这种情况,谢天谢地,Android还为我们提供了一个特别的构件——ViewStub,它可以使你充分享受<include />的好处而不会造成无用View的浪费。
ViewStub是一个看不见的,轻量级的View。它没有尺寸,也不会绘制以及以某种形式参与到布局中来。这意味着ViewStub去inflate以及保留在View层次中的代价是很廉价的。ViewStub最佳的描述称之为“懒惰的include”。ViewStub中引用的布局只在你想添加到UI上时才会显示。
下面的截图来自于Shelves应用程序。图中Activity显示的内容是给用户呈现可浏览的书籍列表:
相同的Activity也用于用户添加或导入新的书籍。在这个操作中,Shelves显示了一个额外的UI。下面的截图显示了在导入期间,会在屏幕的底部显示一个进度表和一个取消按钮:
由于导入书籍不是一个常有的操作,至少相对于浏览书籍列表来说不是,因此,导入panel由ViewStub来承载:
当用户进行一个导入操作时,ViewStub被inflate,此时由它引用的布局文件内容替代显示:
为了使用ViewStub,你所有需要做的是指定android:id特性,便于以后inflate,指定android:layout特性,引用布局文件。ViewStub还允许你使用第三个特性,android:inflatedId,你可以使用它来重写包含的布局文件中的根元素的id。最后,在ViewStub上设定的layout_*参数将会应用到包含的布局文件的顶部。这里有个例子:
当你准备inflate ViewStub时,调用inflate()方法即可。你还可以设定ViewStub的Visibility为VISIBLE或INVISIBLE,也会触发inflate。注意的是,使用inflate()方法能返回布局文件的根View:
有一点需要记住的是:当ViewStub inflate后,这个ViewStub就从View层次中移除了。因此,没有必要保留一个对ViewStub的引用(如在类的字段里)。
ViewStub是快捷编程与高效编程之间的产物。与其手动的inflate View并在运行时添加到View层次上,不如简单的使用ViewStub。它相当“廉价”且易于使用。ViewStub唯一的缺点是现在不支持<merge />标签。
xirihanlin 译于2010.04.23
布局技巧:使用ViewStub相关推荐
- PlayMaker布局技巧:预览GUI界面
PlayMaker布局技巧:预览GUI界面 PlayMaker提供丰富的动作用来构建界面.对于复杂界面,每次通过调试方式查看效果,会非常麻烦.这个时候,开发者可以考虑使用PlayMaker GUI(S ...
- CSS之定位布局(position,relative定位布局技巧)
文章目录 1.什么是定位: 2.各个属性值的描述: 3.各个属性值的具体作用: 4.定位布局技巧:position:relative 与 position:absolute 结合使用: 1.什么是定位 ...
- html css图标怎么跟文字并排,CSS高级技巧:精灵图、字体图标、CSS三角做法、CSS用户界面样式、vertical-align属性应用、溢出文字省略号、常见布局技巧...
CSS高级技巧目录 1.精灵图 使用原因:一个网页往往会有很多小的背景图片作为装饰,为了有效减少接收和发送请求的次数,提供页面加载速度,所以出现了精灵技术.核心原理就是将小图片整合到一张图里,这样浏览 ...
- Android实战技巧:ViewStub的应用
在开发应用程序的时候,经常会遇到这样的情况,会在运行时动态根据条件来决定显示哪个View或某个布局.那么最通常的想法就是把可能用到的View都写在上面,先把它们的可见性都设为View.GONE,然后在 ...
- 布局技巧(等高、圣杯)
1.等高布局 等高布局是指多列子元素在父元素中实现等高视觉效果的布局技巧. 1.1.实现要点(需求) 多列 每一列背景不同 其中任意一列变高,其它列同步变高 1.2.方法一 1.2.1.原理 利用pa ...
- PCB布局技巧大汇总-提高PCB抗电磁干扰能力
PCB布局技巧大汇总 PCB布局技巧大汇总_VX13260562029的博客-CSDN博客 PCB又被称为印刷电路板(Printed Circuit Board),它可以实现电子元器件间的线路连接和功 ...
- 内链锚文本布局技巧,原来是这样!
和SEO打交道这几年的合肥人才网小编觉得,内链在近年来被重视的程度在加深,以前我们在站点优化的过程中,最注意的是外链建设:发的够不够多,百度收录的够不够全,外链发布平台够不够多样化等等.这样的问题,随 ...
- CSS权重,属性书写顺序,布局技巧和网页布局总结,盒子模型排列位置---CSS
文章目录 一.CSS权重 二.CSS属性书写顺序 一.布局总结 二.常见布局技巧 一.CSS权重 注意:类选择器.属性选择器.伪类选择器,权重为 10. 参考看 CSS三大特性,在CSS的特性优先级中 ...
- 平面设计版面设计是什么,平面设计图片排版布局技巧有哪些夏雨老师
平面设计师,要提高自己的版式设计水平,首先需要掌握一定的核心理论知识,让自己具备解构优秀版式设计的能力,你便能从优秀的设计作品中吸取到有用知识.长此以往,便能得到一个正向的进步提升!因此我们首先要知道 ...
最新文章
- 生信分析-TBtools绘制热图
- python for循环删除
- 做机器人,必过的一道坎!
- ListView练习_购物商城
- HNU 实验七 字符串 E-mail地址
- 需求分析报告和需求规格说明书有什么区别
- python 对文件夹的相关操作
- 中科院计算机和理论物理双硕士白,中科院研究生理论物理怎么不学相对论?
- 母函数与指数型母函数模板
- CDOJ 1131 男神的礼物 区间dp
- 什么表示计算机的存储容量,计算机的存储容量是指它具有的什么
- Unity中游戏的存档与读档
- css3实现3d图片旋转效果
- 嵌入式和java工资对比_嵌入式和java哪个前景好
- Nginx配置文件目录实现pdf文件预览及下载
- 4x root 红米_红米Note 4X root教程_红米Note4X获取root权限的方法
- Java开发人员必须掌握的Linux命令(二)
- 主机上没有虚拟机网络适配器VMnet8解决办法
- 三种批量插入数据的方法
- Csdn修改账户手机绑定问题
热门文章
- Java并发编程(十四)并发容器类
- OpenGL的简单研究-开端
- BZOJ4129: Haruna’s Breakfast
- Rhythmk 学习 Hibernate 09 - Hibernate HQL
- html5 初试 indexedDB
- vb.net 如何从文件中读取图像
- MapPoint之旅(2)-----Getting Started with MapPoint Web Service(1)
- Ubuntu 16.04 LTS下编译GPU版tensorflow
- WCF的CommunicationObjectFaultedException异常问题
- Java基础之CopyOnWriteArrayList