Android—LayoutInflater学习笔记

LayoutInflater的的主要用处:使用LayoutInflater来载入界面,类似于findViewById()在Activity中加载Widget组件一样。区别在于与LayoutInflater用于对layout文件夹中的.xml文件进行加载,简单的说就是:LayoutInflater作用是将layoutxml布局文件实例化为View类对象

有以下三种方法来取得LayoutInflater:

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

对比setContentView()和inflater区别:

 1 public class MyInflate extends Activity{   
 2      private TextView tv;  
 3       public  void OnCreate(Bundle savedInstanceState){
 4            super.onCreate(savedInstanceState);
 5             //setContentView(R.layout.main);
 6             //tv = (TextView) findViewById(R.id.tv); 
 7 
 8             LayoutInflater inflate = LayoutInflater.from(this);
 9             View view = inflate.inflate(R.layout.main,null);
10             setContentView(view);    
11             //上面注释语句执行效果和没注释语句执行效果一样
12     }
13 }

 区别:

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

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

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

 

 

 

 

posted on 2013-09-29 20:33  DoMee  阅读(238)  评论(0)    收藏  举报