【转】LayoutInflater.inflate()的参数及其用法

  • Post author:
  • Post category:其他


转自https://blog.csdn.net/lovexieyuan520/article/details/9036673

inflate()的作用就是将一个用xml定义的布局文件查找出来,注意与findViewById()的区别,inflate是加载一个布局文件,而findViewById则是从布局文件中查找一个控件。

1.获取LayoutInflater

对象

有三种方法

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

LayoutInflater类inflate方法有两种,一种是带3个参数的:

inflate(int resource, ViewGroup root, boolean attachToRoot)

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

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

如果没有根控件,就写null

attachToRoot:是否将root附加到布局文件的根视图上(可以写true或false)

另一种带2个参数的,也就是少了boolean attachToRoot参数的

两者的区别请看


三个案例带你看懂LayoutInflater中inflate方法两个参数和三个参数的区别