当筵意气临九霄,星离雨散不终朝。这篇文章主要讲述Android中文API-ViewStub相关的知识,希望能为你提供帮助。
ViewStub控件是一个不可见,0尺寸得惰性控件。当ViewStub控件设置可见,或者调用inflate(),并运行完毕之后,ViewStub所指定的layout资源就会被载入。这个ViewStub就会被新载入的layout文件取代。
ViewStub也会从其父控件中移除。
因此ViewStub存在view
Hierarchy中的生存期为直到ViewStub运行了setVisable(int)或者inflate()方法。
在setVisable或者inflate方法运行完成。被载入的Layout文件伴随着ViewStub的属性设置一起被增加ViewStub的父控件中。
你能够定义或者重写被载入layout文件的id属性。
比如:
< ViewStub android:id=" @+ id/stub" android:inflatedId=" @+ id/subTree" android:layout=" @layout/mySubTree" android:layout_width=" 120dip" android:layout_height=" 40dip" />
这个定义的ViewStub控件能够通过设定的id“stub”找到。在成功获取subTree制定的kayout之后,ViewStub就从其父控件中移除了,被载入的mySubTree,能够通过id“subTree”找到。从以上的代码属性设置来说,终于载入的Layout文件,会以宽120dp,高40dp展示。
通过下面方式,能够使ViewStub展示出其所代表的layout文件。
ViewStub stub = (ViewStub) findViewById(R.id.stub); View inflated = stub.inflate();
当inflate()运行完毕,Viewstub就被替换掉了,inflate返回的View就是mySubTree这个布局文件的View。所以就不须要运行额外的findById了。
【Android中文API-ViewStub】
值 得注意的是:ViewStub在Api1的时候就已经提供了,可是在api16的时候,添加了一个方法:
public void setLayoutInflater (LayoutInflater inflater)
这种方法攻克了,不能指定LayoutInflater 的问题,这涉及了Context的使用。
假设你在低于Api16的开发中,遇到找到不你载入View 的 id的情况,那多数情况是。Context出了问题。在低于api16的情况下,解决方案有两种:
(1)自己定义ViewStub
(2)在V7包中。使用ViewStubCompat类。
作者有话说:假设你须要或者Android中文API。请扫一扫以下的二维码,您的关注。就是我的动力。
文章图片
推荐阅读
- 事务与隔离级别------《Designing Data-Intensive Applications》读书笔记10
- Android 面试收集录5 消息机制
- Android复制粘贴剪切板内容的一种方法
- Computer Science - CS:APP - 2.1 信息存储
- 备份Android机上的照片
- [Android] Toast问题深度剖析
- Android与H5混合开发
- csharp: mappings using Dapper-Extensions+Dapper.net.
- Testin实验室(陌陌APP通过率为94.92% 基本满足移动社交需求)