Android中weight的計算方式

假設(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ù)的寬/高

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容