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函数类似。

posted @ 2012-07-27 06:53  集少成多  阅读(635)  评论(0编辑  收藏  举报