深入理解VIew加载

学习心得URL

1.LayoutInfater

LayoutInfater内部调用

LayoutInflater layoutInflater = (LayoutInflater) context  
    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);  //通过Pull解析工厂层层解析生成DOM树文件

setContextView 外面实际嵌套了一层FrameLayout(原因如下)

  • 控件的layout_width和layout_height要在父容器下才有用
    因为是相对布局所在位置的宽高, 所以单独加载的View的宽高是没有用的

  • 在infater.from()里头有三个参数,通过查看源码得知:

    1. 如果root为null,attachToRoot将失去作用,设置任何值都没有意义。
  1. 如果root不为null,attachToRoot设为true,则会给加载的布局文件的指定一个父布局,即root。
  2. 如果root不为null,attachToRoot设为false,则会将布局文件最外层的所有layout属性进行设置,当该view被添加到父view当中时,这些layout属性会自动生效。
  3. 在不设置attachToRoot参数的情况下,如果root不为null,attachToRoot参数默认为true。

如果有parent设置 attach to root 默认为true 设置为false则把该布局参数加到父布局中(意味着源父布局param失效)

2.onMeasure、onLayout、onDraw

3.视图状态与重绘

4.自定义组合控件

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容