• LayoutInflater和inflate()方法的用法


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

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

    (1).通过SystemService获得

    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).

       LayoutInflaterinflater =getLayoutInflater();//(在Activity中可以使用,实际上是View子类下window的一个函数)
    
       Viewlayout = inflater.inflate(R.layout.main, null);

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

    getLayoutInflater():

    Activity的getLayoutInflater()方法是调用PhoneWindow的getLayoutInflater()方法,看一下该源代码:

        publicPhoneWindow(Contextcontext) {
    
            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){
    
                thrownew AssertionError("LayoutInflaternot found.");
    
            }
    
            returnLayoutInflater;
    
        }

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

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

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

  • 相关阅读:
    ABAP Webdynpro Interface View的用法
    ABAP Webdynpro的跟踪工具WD_TRACE_TOOL
    git 速查
    Python 解析含有命名空间(xmlns)的xml文件(基于ElementTree)
    完全显示DataFrame中行、列内容
    解决Jupyter Notebook中for循环输出DataFrame不够美观
    git配置别名
    元素可拖拽(移动端与pc端)
    pointer network和recursive神经网络
    ELMO,BERT和GPT简介
  • 原文地址:https://www.cnblogs.com/liaojie970/p/5845945.html
Copyright © 2020-2023  润新知