任丘住房建设局网站,广告推广免费发布,怀化建设网站,网站主题模板下载ViewStub控件是一个不可见#xff0c;0尺寸得惰性控件。当ViewStub控件设置可见#xff0c;或者调用inflate()#xff0c;并运行完毕之后#xff0c;ViewStub所指定的layout资源就会被载入。这个ViewStub就会被新载入的layout文件取代。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:idid/stubandroid:inflatedIdid/subTreeandroid:layoutlayout/mySubTreeandroid:layout_width120dipandroid:layout_height40dip / 这个定义的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了。 值得注意的是ViewStub在Api1的时候就已经提供了可是在api16的时候添加了一个方法 public void setLayoutInflater (LayoutInflater inflater) 这种方法攻克了不能指定LayoutInflater 的问题这涉及了Context的使用。 假设你在低于Api16的开发中遇到找到不你载入View 的 id的情况那多数情况是。Context出了问题。在低于api16的情况下解决方案有两种 1自己定义ViewStub 2在V7包中。使用ViewStubCompat类。 作者有话说假设你须要或者Android中文API。请扫一扫以下的二维码您的关注。就是我的动力。