LinearLayout测量过程分析

来源:互联网 发布:linux最新内核版本 编辑:程序博客网 时间:2024/05/16 07:42


第一次测量:

    1 LinearLayout高度模式为Excat时,跳过size==0&&weight>0的子控件,并skippedMeasure设置为true。
    2 如①处,size!=0 && weight>0的子控件,将lp.height改为WRAP_CONTENT一同进行测量。
    3 其余元素正常weight>0之前的控件,按照LinearLayout剩余高度测量,之后的控件按照LinearLayout的全部高度测量

第二次测量:

    进入第二次测量有两种可能性。
    1 第一次测量过程中skippedMeasure设置为true,跳过的控件按weight分配的高度测量
    2 子控件的weight大于0,且第一次测量结果所有子控件的总高度不等于LinearLayout的高度,可能大于,可能小于,按weight分配的高度+原测量高度重新测量
      如果大于,高度增加,如果小于,高度减小
    3 LinearLayout的高度为WRAP_CONTENT,并使用了userLargestChild标志,所有weight>0的子控件按已测量控件的最大高度重新测量

第三次测量:

    如果LinearLayout的宽度模式不是Exact,且子控件中宽度有MATCH_PARENT,按LinearLayout的宽度,子控件前面测量的高度,重新测量


参考链接:

http://blog.csdn.net/litefish/article/details/46623909

http://blog.csdn.net/feiduclear_up/article/details/46772477

0 0
原创粉丝点击