假設(shè):
LinearLayout為android:orientation="horizontal",
LinearLayout中包含三個控件
layout_weight屬性值分別為1、2、2
第一種:
每個控件的寬度屬性都為android:layout_width="0dp",
那么額外的空間為(手機的寬度假設(shè)為X)X-0-0-0=X,那么根據(jù)sdk上所述:
第一個控件的寬度為 0+(1/(1+2+2))X=X/5
第二個控件的寬度為 0+(2/(1+2+2))X=2X/5
第三個控件的寬度為 0+(2/(1+2+2))*X=2X/5
第二種:
每個控件的寬度屬性都為android:layout_width="match_parent",
那么額外的空間就是X-X-X-X=-2X
第一個控件的寬度為 X+(1/(1+2+2))(-2X)=3X/5
第二個控件的寬度為 X+(2/(1+2+2))(-2X)=X/5
第三個控件的寬度為 X+(2/(1+2+2))(-2X)=X/5
第三種:
其中第一個控件寬度屬性為android:layout_width="match_parent",
其他兩個控件寬度為android:layout_width="0dp",額外的空間為X-X-0-0=0
第一個控件的寬度為 X+(1/(1+2+2))0=X
第二個控件的寬度為 0+(2/(1+2+2))0=0
第三個控件的寬度為 0+(2/(1+2+2))*0=0
最終結(jié)論:layout_weight的公式
控件的寬度/高度 = 控件的width/height值+(該控件的weight值/所有控件的weight的和)×額外的空間
額外的空間=手機的寬度/高度-所有控件的寬度/高度
注:如果屬性為android:layout_width="wrap_content" 則計算時,總寬/高要減去控件本身占據(jù)的寬/高