第一次測量: 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