• 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了。

        值得注意的是:ViewStub在Api1的时候就已经提供了,可是在api16的时候,添加了一个方法:

    public void setLayoutInflater (LayoutInflater inflater)

    这种方法攻克了,不能指定LayoutInflater 的问题,这涉及了Context的使用。

        假设你在低于Api16的开发中,遇到找到不你载入View 的 id的情况,那多数情况是。Context出了问题。在低于api16的情况下,解决方案有两种:

    (1)自己定义ViewStub

    (2)在V7包中。使用ViewStubCompat类。


    作者有话说:假设你须要或者Android中文API。请扫一扫以下的二维码,您的关注。就是我的动力。




  • 相关阅读:
    arduino远程刷新(烧录)固件
    通过语音控制电灯、空调、房门。芝麻开门
    arduino红外遥控库IRremote的IRsend类sendRaw函数溢出问题及其解决方法
    64位sql server 如何使用链接服务器连接Access
    Linux常用命令汇总
    常用的排序算法总结
    MongoDB数据库常用SQL命令 — MongoDB可视化工具Robo 3T
    SynchronousQueue队列程序的执行结果分析
    输入编码,自动匹配并输出相对应的名称
    linux五种IO模型与事件驱动模型
  • 原文地址:https://www.cnblogs.com/llguanli/p/8446958.html
Copyright © 2020-2023  润新知