对于LayoutInflater的一些理解

获取

大家都知道LayoutInflater的作用是将布局填充到View中
这里写图片描述
用getLayoutInflater()方法或者getSystemService(LAYOUT_INFLATER_SERVICE)来获取

调用LayoutInflater类下的from方法,接收context返回一个layoutInflater对象

接收三个参数的inflate()方法

重点来了,LayoutInflater在日常的开发中经常会使用,但是inflate(int resource, ViewGroup root, boolean attachToRoot)方法接收的三个参数,很少有书本会具体的讲解。
inflate()方法API
当我们查过官方文档之后就很好理解了。首先这个方法是会返回一个View的,然后第一个参数是布局文件的id,很好理解。重点是第二个参数,分两种情况,第一种情况:如果第三个参数是true的,第二个参数就作为返回的View的父容器。第二种情况:如果第三个参数是false的话,那么root的作用就是给resource的根标签用于测量一系列Layout参数。说白了就是例如layout_width和layout_height这类,match_parent就需要依靠父容器的大小了,root就提供了这个大小,但是并没有把这个返回的View attach在root上面,因此在接收返回值后,还可以把这个返回的view add在别的容器中。还需要注意一点,第二个参数是可以为空的,那么第三个参数也没有意义了。而第三个参数的作用,刚刚已经说了。

总结

不少入门书和视频教程里面都会这样说:记住XXX是这种XXX情况下的标准写法,至于为什么,现在先不讲。其实很多问题只要查下文档就能更加深刻的理解,看似花了更多时间,其实这个厚积薄发的过程会让后期的学习效率爆炸式增长。

睡了