getLayoutInflater.inflate的参数问题

它有两种参数形式:
  1. 两个参数:resource,root
  2. 三个参数: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有父可依赖,这就不会出现什么问题
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值