LinearLayout權重算法

插曲

昨天去面試,首先要在網上筆試,其中有一道題就是view權重分配的算法。因為權重用得比較少,且一般都是設置0dp或者matchparent,這兩種情況下比較好計算,view寬高肉眼可調。但是今天遇到的題是另一種情況:給定屏幕寬度(dp)和兩個view的寬度(dp)和權重,然后求最后view的寬度。

算法

view最終寬高 = view原始寬/高 + 按比例分配的屏幕剩余寬高

  • 例子:
    假設LinearLayout(橫向布局)作為根布局,且寬度為400dp;
    根布局下有兩個button,分別為btn1(寬度300dp,權重為2)和btn2(寬度300dp,權重為3);

    由此得出屏幕剩余寬度 = 400dp - (300dp + 300dp)= -200dp;
    最終btn1寬度 = 原始寬度 + 權重比 * 屏幕剩余寬度 = 300dp + 2 /(2 + 3)* (-200dp)= 220dp;
    最終btn2寬度 = 原始寬度 + 權重比 * 屏幕剩余寬度 = 300dp + 3 /(2 + 3)* (-200dp)= 180dp;

以上只計算了寬度的權重分配,高度權重分配類似。

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容