LayoutInflater和inflate()方法的用法

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

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

(1).经过SystemService得到spa

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

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

(2).从给定的context中得到xml

    LayoutInflaterinflater = LayoutInflater.from(context);对象

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

(3).get

    LayoutInflaterinflater =getLayoutInflater();(在Activity中能够使用,其实是View子类下window的一个函数)源码

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


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

getLayoutInflater()

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

    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
ViewlayoutID
root
: 生成的层次结构的根视图
return 
填充的层次结构的根视图。若是参数root提供了,那么root就是根视图;不然填充的XML文件的根就是根视图。

其他几个重载的inflate函数相似。

相关文章
相关标签/搜索