• LayoutInflater和inflate()方法的用法 .


    LayoutInflater作用是将layoutxml布局文件实例化为View类对象。

    实现LayoutInflater的实例化共有3种方法,

    (1)通过getSystemService获得

        LayoutInflaterinflater = (LayoutInflater)context.getSystemServices(Context.LAYOUT_INFLATER_SERVICES);

        Viewview = inflater.inflate(R.layout.main, null);

    (2)从给定的context中获得

        LayoutInflaterinflater = LayoutInflater.from(context);

        Viewview = inflater.inflate(R.layout.mian, null);

    (3)getLayoutInflater()

        LayoutInflaterinflater =getLayoutInflater();Activity中可以使用,实际上是View子类下window的一个函数)

        Viewlayout = inflater.inflate(R.layout.main, null);

     其实,这三种方式本质是相同的,从源码中可以看出:

    getLayoutInflater()

    ActivitygetLayoutInflater()方法是调用PhoneWindowgetLayoutInflater()方法,看一下该源代码:

        publicPhoneWindow(Context context) {

            super(context);

            mLayoutInflater= LayoutInflater.from(context);

        }

    可以看出它其实是调用LayoutInflater.from(context)

    LayoutInflater.from(context)

        public static LayoutInflaterfrom(Context context) {

            LayoutInflaterLayoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            if(LayoutInflater== null){

                throw new AssertionError("LayoutInflater not found.");

            }

            returnLayoutInflater;

        }

    可以看出它其实调用context.getSystemService()

    总结:3个方法最终是调用content.getSystemService()

     

     

    public View inflate(int Resourece,ViewGroup root)
    作用:填充一个新的视图层次结构从指定的XML资源文件中
    reSource
    ViewlayoutID
    root
    : 生成的层次结构的根视图
    return 
    填充的层次结构的根视图。如果参数root提供了,那么root就是根视图;否则填充的XML文件的根就是根视图。

     

    其余几个重载的inflate函数类似。

     

    public View inflate(int Resourece,ViewGroup root)
    作用:填充一个新的视图层次结构从指定的XML资源文件中
    reSource
    ViewlayoutID
    root
    : 生成的层次结构的根视图
    return 
    填充的层次结构的根视图。如果参数root提供了,那么root就是根视图;否则填充的XML文件的根就是根视图。

    其余几个重载的inflate函数类似。

  • 相关阅读:
    NPOI导出excel表格应用
    通过用户密码获取共享文件
    sql之left join、right join、inner join的区别
    C#日志编写
    C#预编译指令
    匿名类型(C# 编程指南)
    反射
    SQL通用查询
    Lambda 表达式(C# 编程指南)
    自定义用户控件编写——(文件夹目录选择)
  • 原文地址:https://www.cnblogs.com/xilin/p/2611066.html
Copyright © 2020-2023  润新知