是通过LayoutInflater来加载XML布局文件的,其内部原理就是利用pull解析的方式读取XML文件,把节点名称获取后,利用反射机制进行创建对象,例如节点是<RelativeLayout>就可以知道名称是RelativeLayout,然后反射该名字拿到对应的包,然后调用RelativeLayout(context, attrs)构造方法实例化对象,第一个参数context在我们创建LayoutInflater实例时会传入,第二个参数就是该节点下的属性,在读取XML文件时,会用一个AttributeSet集合进行保存。获取到对象后,我们就可以直接调用父View的addView方法添加,如果是在Activity中作为根布局,我们可以使用setContentView方法直接传入一个布局文件的id号,其内部也是通过这种方式获取到View对象添加的! |