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,如需转载请自行联系原作者


相关文章
|
9月前
|
Android开发
Android LayoutInflater.from(context).inflate()方法的作用
Android LayoutInflater.from(context).inflate()方法的作用
49 0
|
Android开发
Android 重写TextView的onDraw函数遇坑记
Android 重写TextView的onDraw函数遇坑记
166 0
Android 重写TextView的onDraw函数遇坑记
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 中的根布局设置的宽高属性会失效。
|
Java Android开发 容器
android FragmentPagerAdapter getItem方法没有执行
android FragmentPagerAdapter getItem方法没有执行
|
XML Android开发 数据格式
Android LayoutInflater的用法详解
相信我们在开发过程中肯定接触过LayoutInflater,比如ListView的适配器里的getView方法里通过LayoutInflater.from(Context).inflater来加载xml布局,在Fragment里的onCreateView里面也是一样,加载布局一共三种方法。
1073 0

热门文章

最新文章