inflate函数使用总结

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)比较好。

你可能感兴趣的:(Android)