LinearLayout測量過程分析


第一次測量:

    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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章