本文主要是介绍LayoutInflater.from(this).inflate()方法参数解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
写在前边
- 现在的时间:2019-3-20
知识预备
控件的宽和高
- 这两个属性表示在容器中的大小,也就是说控件必须指定父布局这两个属性才能起作用。
- 为什么Activity布局文件根节点的宽高属性可以起作用
- Android中有一个顶级View叫做DecorView,DecorView中包含一个竖直方向的LinearLayout,LinearLayout由两部分组成,第一部分是标题栏,第二部分是内容栏,内容栏是一个FrameLayout.
- 我们在Activity中调用setContentView就是将View添加到这个FrameLayout中,所以说布局文件也有父布局。
addView
函数不能达到指定父布局效果- inflate()函数可以指定父布局,并且可将父布局指定为自己,但指定为自己的话宽和高会失效
如何调用inflate()函数
- 首先要获得一个
LayoutInflater
的实例,有三种方法,这三种方法实质上是相同的,最常用的是第一种。LayoutInflater inflater1 = LayoutInflater.from(this);
LayoutInflater inflater2 = getLayoutInflater();
LayoutInflater inflater3 = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- 然后使用这个实例调用
inflate
方法
inflater.inflate(xxxxxxx)
inflate函数的作用
- 作用一:可以获取某个
xxx.xml
布局文件,这个函数的返回值就是获取的布局文件findViewById()
函数是获取布局文件中的某个控件,这个函数就是获取布局文件。
- 作用二:将布局文件添加到某个布局中
其他
- inflate的意思:使充气
- 音标:/ɪnˈfleɪt/
inflate()方法参数解析
三个参数的
public View inflate(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot)
- 第一个参数:要获取的布局,传入
R.layout.xxx
- 第二个参数:这个参数也是一个布局,是为第一个参数指定的父布局。
- 第三个参数(如果第二个参数为
null
这个参数将失去作用)true
:将第一个参数表示的布局添加到第二参数的布局中。false
:不将第一个参数表示的布局添加到第二参数的布局中。- 既然不添加,那么为什么第二个参数不设置为
null
呢。 - 不添加的话,这个函数就只剩下一个作用了,那就是获取布局,为了使第一个参数的宽高属性不失效,所以要为他指定一个父布局
- 既然不添加,那么为什么第二个参数不设置为
两个参数的
public View inflate(@LayoutRes int resource, @Nullable ViewGroup root)
- 第一个参数:要获取的布局,传入
R.layout.xxx
- 第二个参数:这个参数也是一个布局,是为第一个参数指定的父布局。
- 如果这个参数是null就不把第一个参数的布局添加进来
- 如果这个参数不是null就把第一个参数的布局添加进来
查看源码它其实还是调用三个参数的
public View inflate(@LayoutRes int resource, @Nullable ViewGroup root)
{return inflate(resource, root, root != null);
}
这篇关于LayoutInflater.from(this).inflate()方法参数解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!