layout weight部分常見屬性解析

2021-07-09 07:47:57 字數 1455 閱讀 6094

<?xml version="1.0" encoding="utf-8"?>

如上面xml檔案所示則顯示的布局如圖:解釋一下,它是先將wrapcontent所佔的長度分出去然後再將剩餘控制項的長度按照weight的比例1:2:2再次進行分配。

若將第乙個textview的layout_width設定成0dp,則如下圖顯示:

此時可以發現第乙個textview的控制項不在與另外兩個底部相持平,但是第乙個textview空間裡面內容的第一行還是與其他控制項的內容相持平的。此時需要在父布局linearlayout中設定android:baselinealigned="false"將預設設定設定為false,此時因為三個textview的控制項的layout_weight都為0dp,所以此時的寬度就會按照weight的比例1:2:2的寬度來顯示如圖所示:

可以看出linearlayout中的weight屬性首先按照控制項宣告中的尺寸進行分配,然後將剩下 的尺寸按weight分配。

若將三個textview的控制項的wight都設定成match_parent,此時三個控制項如下圖所示:

為什麼會是這樣呢,明明比例是1:2:2啊。

首先減去控制項宣告的尺寸剩下的尺寸在按比例分配。假設外層的linearlayout是480,這裡三個textview宣告的寬度都是480,而第乙個就把這個480分配完了,於是減去控制項宣告的寬度此時剩餘的寬度是480-480*3=-960是負的960,把這-960在平均分成5份,第乙個textview佔據其中的乙份,第二個和第三個textview各佔據兩分,於是:

第乙個textview所佔據的寬度應該是:自身的matchparent也就是480加上分配的剩下的寬度於是就是:480+(-960*0.2)=480*(3/5)。

第二個textview所佔據的寬度就是:自身的matchparent也就是480加上分配的剩下的寬度於是就是:480+(-960*0.4)=480*(1/5)。

第三個textview所佔據的寬度就是:自身的matchparent也就是480加上分配的剩下的寬度於是就是:480+(-960*0.4)=480*(1/5)。

如果說在linearlayout當中只有乙個textview並且你想讓他佔據整個寬度的二分之一的話,只需要在父布局中設定weightsum=2在子空間textview中設定weight等於1就可以了。

android 中layout weight的作用

layout weight 用於給乙個線性布局中的諸多檢視的重要度賦值。所有的檢視都有乙個layout weight值,預設為零,意思是需要顯示多大的檢視就佔據多大的螢幕空 間。若賦乙個高於零的值,則將父檢視中的可 用空間分割,分割大小具體取決於每乙個檢視layout weight 值以及該值在當前...

layout weight詳解示例

layout wlayout weight 表示該view 控制項佔據父控制項剩餘空間的比例 示例 1.未使用layout weight 第乙個 linearlayout 將父控制項全部覆蓋,無法顯示第二個。如果android layout height wrap content android l...

android中layout weight的理解

例如 xmlns android android layout width fill parent android layout height wrap content android background 00ff00 android weightsum 0 android orientation...