它有两种参数形式:
- 两个参数:resource,root
- 三个参数:resource,root,attachToRoot
查了两个参数的原码,大概意思是这样的:
getLayoutInflater.inflate(resource,root){
return getLayoutInflater.inflate(resource,root,root!=null);
}
可以看出,两个参数的其实就是三个参数的特殊情况,只是官方给出了
第三个参数的情况:当root为空时,第三个参数为true,当root不空时,
第三个参数为false。
而后两个参数对结果有什么影响呢?
当用了三个参数的方法:那么后两个参数的组合形式有4种:
- root非null,attachToRoot为true
- root非null,attachToRoot为false
- root为null,attachToRoot为true
- root为null,attachToRoot为false
那么先看看这句方法是什么意思,这句方法是视图加载器,将第一个XML变为View
加载到第二个父视图中。
而一个Xml文件转换为视图后,必须要根节点有父容器(因为根节点中的很多属性依赖于父容器,比如width\height属性),当没有父容器的时候,也就是root为null的时候,根节点以及根节点中的属性将会失效,这也就是为什么无论怎么设置宽高属性都没有变化的原因。第三个参数的意思是是否加载到父容器。
所以当root非null的时候,代表View有父可依赖,这就不会出现什么问题