LayoutInflater的inflate函数用法

简介:

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

获取LayoutInflater的方法有如下三种:

LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.main, null );
 
LayoutInflater inflater = LayoutInflater.from(context); (该方法实质就是第一种方法,可参考源代码)
View layout = inflater.inflate(R.layout.main, null );
 
LayoutInflater inflater = getLayoutInflater();(在Activity中可以使用,实际上是View子类下window的一个函数)
View layout = inflater.inflate(R.layout.main, null );

 

一直有点纠结setContentView和inflate的区别找了一些资料。写了个小程序看了下:

public  class  MyInflate extends  Activity{
     private  TextView tv;
     public  void  OnCreate(Bundle savedInstanceState){
         super .onCreate(savedInstanceState);
         //setContentView(R.layout.main);
         //tv = (TextView) findViewById(R.id.tv);
 
         LayoutInflater inflate = LayoutInflater.from( this );
         View view = inflate.inflate(R.layout.main, null );
         setContentView(view);
     }
}

 

上述注释掉的代码和没有注释掉的代码两种情况是相同的。

 

 

 

区别:
setContentView()一旦调用, layout就会立刻显示UI;而inflate只会把Layout形成一个以view类实现成的对象,有需要时再用setContentView(view)显示出来。一般在activity中通过setContentView()将界面显示出来,但是如果在非activity中如何对控件布局设置操作了,这就需要LayoutInflater动态加载。

 

 

 

 

 

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

 

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

 


本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/4913320.html,如需转载请自行联系原作者


相关文章
|
Android开发
Android LayoutInflater.from(context).inflate()方法的作用
Android LayoutInflater.from(context).inflate()方法的作用
83 0
|
Android开发
Android | View & Fragment & Window 的 getContext() 一定返回 Activity 吗?
Android | View & Fragment & Window 的 getContext() 一定返回 Activity 吗?
164 0
Android | View & Fragment & Window 的 getContext() 一定返回 Activity 吗?
LayoutInflater总结
总结: 1、root不为空,attachToRoot为true。 此时布局会直接添加到root上,并且root布局中设置的宽高参数会生效。 此时如果再执行root.addView(view)的话会报错。 2、root不为空,attachToRoot为false。 此时生成的view的宽高参数有效,但是view不会直接添加进root。 3、root为空,attachToRoot的值随意。 当root为null时,不论attachToRoot为true还是为false,显示效果都是一样的。 此时layout_linearlayout.xml 中的根布局设置的宽高属性会失效。
|
XML Android开发 数据格式
|
Java Android开发
Android Layout inflate分析(2) - ViewGroup对象的构造
inflate系列第2章出炉,工具已经齐备,下面开始介绍材料。首先我们从ViewGroup中的LayoutParams开始打牢基础,这是个只有宽和高两个参数的简单类,通过它我们把TypedArray,Theme之类的概念搞清楚,为将来进入更复杂的布局做准备。
2948 0