基于Android 4.2.2做的分析
parser里封装了layout的dom对象,从中可以获取各节点参数
root为layout对应根节点的父节点,其作用见上述文档解释,需要注意一点的是,root的作用主要有两个:
1.根据root的类型(RelativeLayout/LinearLayout),结合layout配置的attrs创建layoutParams,
如root为RelativeLayout时,layout中设置toleftof,则创建的RelativeLayout.LayoutParams中会保存该属性。
2.为layout的viewgroup设置该layoutParams
对于layout的子节点,采用递归函数设置
这里主要分析下params = root.generateLayoutParams(attrs);和temp.setLayoutParams(params);
假定root类型为RelativeLayout,则generateLayoutParams会调用如下:
其父类为ViewGroup.MarginLayoutParams,其构造函数如下:
可以看到父类中会根据attrs设置layoutParams对象中的基本属性:宽高、margin
而子类中则负责relativelayout特有的属性设置,如below/toleftof/above/alignXXX属性:
若layout文件中顶级节点如下,而其root为RelativeLayout,则上述操作便是设置红框内的属性,而setLayoutParams的作用为使其生效。
 
该函数的作用描述如下:
这里的mParent就是root
综上若attach=false时,root的作用就是为使得layout的layout_params生效,建议在onCreate/onCreateView/onCreateContentView中inflate使用root参数,避免布局失效。
比如layout中设置顶级节点android:layout_height="184dp",但若inflate时root=null,则实际显示时layout_xxx不生效
 
Ref:
http://blog.csdn.net/xyz_fly/article/details/37932989
 
 
 
 
 

最新文章

  1. Screeps ———— A MMO Strategy Sandbox Game for Programmers
  2. android控制系统音量
  3. OS X运行AFNI的AlphaSim提示libgomp.1.dylib找不到的解决办法
  4. NumberFormat usage
  5. [SLAM] 02 Some algorithms of 3D reconstruction
  6. 【linux】xrander/cvt自定义分辨率
  7. 怎么学好python?
  8. Spring中IoC的入门实例
  9. C++ 中的 const 详解
  10. C++:虚函数的详解
  11. Photoshop:路径填充边缘虚化问题
  12. Oracle 10g AND Oracle 11g手工建库案例--Oracle 11g
  13. HDU 3201 Build a Fence
  14. 2.bootstrap-全局css
  15. C#设计模式整理
  16. himm的使用
  17. Git使用(一、TortoiseGit和Gitlab在Windows下的项目库创建和上传)
  18. Docker下操作指令
  19. MATLAB中文件的读写和数据的导入导出
  20. ADO.NET梳理

热门文章

  1. 2018.09.11 poj2976Dropping tests(01分数规划)
  2. 2018.07.23 洛谷P4513 小白逛公园(线段树)
  3. [GO]解决golang.org/x/ 下包下载不下来的问题
  4. Linux服务器部署系列之七—OpenLDAP篇
  5. Linux学习--2
  6. UVa 11384 Help is needed for Dexter (递归)
  7. MATLAB实现最优低通滤波器的函数
  8. Java性能调优:利用JFR生成性能日志
  9. 图片适应bitmap的大小 http上传文件
  10. 基于Verilog HDL的二进制转BCD码实现