關於Layout weight的布局問題

2021-06-19 05:29:44 字數 1730 閱讀 4470

需要注意的是layout_weight的值並不是越大其佔得比重就越大!恰恰相反,如果有兩個控制項的屬性值分別是1、2,則其螢幕分割比例應該分別是2/3、1/3。嚴格遵循這種比例關係的前提是兩個控制項的layout_width或layout_height(取決於哪個維度競爭螢幕空間)都為fill_parent。

在網上看了一些對layout_weight的講解,有些說的比較片面,只列舉了一種情況,然後自己通過實驗和一些比較好的文章總結了一下,特此記錄下來,以備以後所用。layout_weight是線性布局,也就是linearlayout裡面用到的,下面通過實驗來看這個layout_weight的特性。

1.當控制項的屬性android:layout_width="fill_parent"時,布局檔案如下:

xml** 

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

在這裡button1的layout_weight=1,buttong2的layout_weight=2,執行效果為:

我們看到,button1佔了2/3,button2佔了1/3。如果此時把button2的weight設定成2000,不是說button2就消失了,而是button1的寬度幾乎佔滿了螢幕寬度,而螢幕最後一絲細條則是留給button2的,已近非常小了,沒有顯示出來。截圖如下:

得出結論:在layout_width設定為fill_parent的時候,layout_weight代表的是你的控制項要優先盡可能的大,但盡可能大是有限度的,即fill_parent.

2.當控制項的屬性android:layout_width="wrap_content"時,布局檔案如下:

xml** 

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

同樣,button1的weight設定為1,button2的weight設定為2,但是效果與fill_parent的效果截然相反。執行效果如下:

這時,和fill_parent正好相反,button1的寬度佔據了螢幕寬度的1/3,而button2的寬度佔據了螢幕的2/3,如果此時把button1的weight設定為2000,按照之前理解,button1應該小的幾乎在螢幕上看不到,但是錯了,實驗告訴我們,當button1的weight非常小時,也要"wrap_content",也就是要保證button1至少能夠顯示。以下是button1設定weight為2000時的執行截圖:

我們看到,button1已經足夠小,但是要保證他能顯示出來,因此得出結論:

在layout_width設定為wrap_content的時候,layout_weight代表的是你的控制項要優先盡可能的小,但這個小是有限度的,即wrap_content.

當了解這些後,我們再設計程式時,為了能夠自適應螢幕,不想給控制項乙個指定的寬度和高度,就可以使用這個weight屬性來讓它按自己比例來劃分螢幕高度或者寬度了。

layout weight屬性的小結

在android的控制項布局中,有乙個奇葩的 layout weight 屬性,定義如下 layout weight 用於指定剩餘空閒空間的分割比例。用法 為什麼說是奇葩呢?以上面的布局 為例,textview 888 和 textview 999999 是橫向排列的2個控制項,它們的layout ...

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...