LayoutInflater中有重载的两个函数
// 三个参数
public View inflate(int resource, ViewGroup root, boolean attachToRoot)
参数解释:
1、resource:要添加的布局
2、root:这个参数下面会讲解到--参数1布局是否处于root中(root是否为null决定)
3、attachToRoot:表示是否将第1个参数指定的布局添加到第二个布局当中
分情况
1、当root!=null,attachToRoot=true时
程序会之间将resource指定的布局添加到root中,并且resource布局的根结点属
性都是生效的
注意:当attachToRoot=true的时候,源码里面会自动执行root.addView.所以如果你自己再次调用addView的时候会报异常。
2、当root!=null, attachToRoot=false时
root指定了父容器,attachToRoot=false没有布局添加到父容器中。由于指定了父容器root,所以resource布局的根结点属性会生效
注:root是否为空可以决定resource布局中的根结点属性是否生效
3、当root=null, attachToRoot=true|false
由于root=null,所以resource中根结点的属性不会生效。
两个参数
public View inflate(int resource, ViewGroup root) {
return inflate(resource, root, root != null);
}
可以看出源码中直接调用的三个参数的函数
root!=null时,跟上面1相同
root==null时,跟上面3相同