本文为网上关于LayoutInflater的inflate函数分析的整理,和一些个人理解!
LayoutInflater作用是将layout的xml布局文件实例化为View类对象。
获取LayoutInflater的方法有如下三种:
|
一直有点纠结setContentView和inflate的区别找了一些资料。写了个小程序看了下:
|
上述注释掉的代码和没有注释掉的代码两种情况是相同的。
区别:
setContentView()一旦调用, layout就会立刻显示UI;而inflate只会把Layout形成一个以view类实现成的对象,有需要时再用setContentView(view)显示出来。一般在activity中通过setContentView()将界面显示出来,但是如果在非activity中如何对控件布局设置操作了,这就需要LayoutInflater动态加载。
1.关于public View inflate(int Resourece,ViewGroup root)方法
作用:填充一个新的视图层次结构从指定的XML资源文件中
reSource:View的layout的ID
root: 生成的层次结构的根视图
return 填充的层次结构的根视图。如果参数root提供了,那么root就是根视图;否则填充的XML文件的根就是根视图。
其余几个重载的inflate函数类似。
2.关于LayoutInflater类inflate(intresource, ViewGroup root, boolean attachToRoot)方法三个参数的含义
resource:需要加载布局文件的id,意思是需要将这个布局文件中加载到Activity中来操作。
root:需要附加到resource资源文件的根控件,什么意思呢,就是inflate()会返回一个View对象,如果第三个参数attachToRoot为true,就将这个root作为根对象返回,否则仅仅将这个root对象的LayoutParams属性附加到resource对象的根布局对象上,也就是将布局文件resource的布局参数转换为外层root可以接受的类型,比如root是一个LinearLayout自己要转换的resource里面有layout_width=”fill_parent”,和layout_height=”fill_parent”参数,但是这些参数没有外部环境,它们对应的对象都是ViewGroup.LayoutParams对象,root参数让系统将ViewGroup.LayoutParams对象转换为LinearLayout.LayoutParams对象。
attachToRoot:是否将root附加到布局文件的根视图上
本文详细介绍了LayoutInflater如何将XML布局文件转化为View对象。对比了setContentView与inflate的区别,并重点解析了inflate方法中root参数的作用,以及inflate(int resource, ViewGroup root, boolean attachToRoot)的三个参数含义。在非Activity场景下,LayoutInflater用于动态加载和操作控件布局。"
84029766,5601498,使用BAPI_ACC_DOCUMENT_POST过账会计凭证解析,"['财务会计', 'SAP BAPI', '企业资源规划', '会计信息系统', '账务处理']
646

被折叠的 条评论
为什么被折叠?



