zoukankan      html  css  js  c++  java
  • 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函数类似。

  • 相关阅读:
    Python爬虫一
    Python爬虫二
    DRF框架中的演变View
    计算时间复杂度例题
    vue2.x webpack打包资源路径问题
    vs code运行c语言 控制台乱码 问题
    解决视频的声音和画面不同步问题
    c语言数据结构,静态链表,结构体数组
    swagger @ApiModel添加实体类不生效
    计算及校验海明码的3个举例
  • 原文地址:https://www.cnblogs.com/xilin/p/2611066.html
Copyright © 2011-2022 走看看