yejun0099 发表于 2013-1-30 04:02:26

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的IDroot: 生成的层次结构的根视图return 填充的层次结构的根视图。如果参数root提供了,那么root就是根视图;否则填充的XML文件的根就是根视图。其余几个重载的inflate函数类似。 
页: [1]
查看完整版本: LayoutInflater和inflate()方法的用法