inflate()两个参数和三个参数的区别
以前使用没有关注过,因为觉得没报bug就行了,两个三个参数无所谓,经过导师提醒,决定好好看看源码和相关知识,总觉一下区别,以免真正发现错误了找不到原因。
public View inflate(int resource, ViewGroup root, boolean attachToRoot)
第三个参数 attachToRoot 表示当前的view是否直接绑定在父容器上,打开两个参数函数的源码
public View inflate(@LayoutRes int resource, @Nullable ViewGroup root) {
return inflate(resource, root, root != null);
}
他的本质也是引用三个参数的inflate()函数,当第二个参数不为null时,对应自动第三个参数为true;当第二个参数为null时,对应自动第三个参数为false;即:
inflate(R.layout.item,null) ===> inflate(R.layout.item,null,false)
inflate(R.layout.item,parent) ===>inflate(R.layout.item,parent,true)
所以我们在使用inflate()函数的时候,最好使用三个参数的,现在问题就聚焦在第三个参数设为true还是false比较好。
推荐设为false,因为设置为true的话,当前view的布局会自动加载到父容器当中,你自己设置的view的宽高就有可能会被覆盖掉,为了不影响布局大小还是用inflate(R.layout.item,parent,false)比较好。