Android高手秘笈之View的挂载
2019-04-07 本文已影响10人
门心叼龙
目录
[1.view挂载的流程?]
[2. LayoutInflater的用法?]
[3. 我们在调用setContentView方法的时候,加载的布局文件并没有设置其TitleBar为什么也显示了?]
1.view挂载的流程?
- 1.1 setContentView 调用开始
- 1.2 调用LayoutInflater的inflate方法加载布局文件
- 1.3 通过pull解析xml布局文件
- 1.4 通过反射技术实例化控件
- 1.5 将view添加RootView中
- ViewRootImpl.java --> performTraversals()--> measureHierarchy() --> measure();
2. LayoutInflater的用法?
LayoutInflater layoutInflater = LayoutInflater.from(context);
LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
layoutInflater.inflate(resourceId, root);
- 2.1 如果root为null,attachToRoot将失去作用,设置任何值都没有意义。
- 2.2 如果root不为null,attachToRoot设为true,则会给加载的布局文件的指定一个父布局,即root。
- 2.3 如果root不为null,attachToRoot设为false,则会将布局文件最外层的所有layout属性进行设置,当该view被添加到父view当中时,这些layout属性会自动生效。
- 2.4 在不设置attachToRoot参数的情况下,如果root不为null,attachToRoot参数默认为true。
3. 我们在调用setContentView方法的时候,加载的布局文件并没有设置其TitleBar为什么也显示了?
TitleBar是系统帮我们自动创建的,我们添加的View其实是添加到了TitleBar下的FrameLayot里面
image image.gif