inflate浅析

对于加载布局,有两种情况:

1.直接用setContentView(int resourceID);,加载后将会立即显示。

2.inflate()动态加载,生成一个View类的对象,有需要时再进行显示。


那么inflate()该怎么使用呢?

inflate()是类LayoutInflater的方法,所以得先生成LayoutInflater的对象。


1.生成类LayoutInflater的对象。

方法有三种:

LayoutInflater inflater=(LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE);

LayoutInflater inflater=LayoutInflater.from(this); //该方法其实就是第一种方法


LayoutInflater inflater=getLayoutInflater(); //可以在Activity中使用,就是View下Window类的一个方法。

2.使用LayoutInflater类的inflate()方法加载布局文件。(重载的inflate()方法有多个,这里只列举常用的两个。)

a. inflater.inflate(int resource,viewGroup root);

eg: inflater.inflate(R.layout.main,null);

参数解释:

resource : View的layout的ID,即要加载的布局文件的ID。


b. inflater.inflate(int resource, ViewGroup root, boolean attachToRoot);

eg:View view1=View.inflate(this,R.layout.dialog_layout,null);  

参数解释:

resource:需要加载布局文件的id,意思是需要将这个布局文件中加载到Activity中来操作。

root:需要附加到resource资源文件的根控件,什么意思呢,就是inflate()会返回一个View对象,如果第三个参数attachToRoot为true,就将这个root作为根对象返回,否则仅仅将这个root对象的LayoutParams属性附加到resource对象的根布局对象上,也就是布局文件resource的最外层的View上,比如是一个LinearLayout或者其它的Layout对象。

attachToRoot:是否将root附加到布局文件的根视图上。

参考网站:
Android 之inflate()方法用途
LayoutInflater和inflate()的用法
Android中的inflate()是什么意思
LayoutInflater的inflate()方法用法详解
Android中inflate()简介

你可能感兴趣的:(android)