本文轉載自http://sinye.iteye.com/blog/1068204
android
在網上看了一些對Layout_weight的講解,有些說的比較片面,只列舉了一種狀況,而後本身經過實驗和一些比較好的文章總結了一下,特此記錄下來,以備之後所用。Layout_weight是線性佈局,也就是LinearLayout裏面用到的,下面經過實驗來看這個Layout_weight的特性。ide
1.當控件的屬性android:layout_width="fill_parent"時,佈局文件以下:佈局
<?xmlversion="1.0"encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal"android:layout_width="fill_parent" android:layout_height="fill_parent"> <Buttonandroid:layout_width="fill_parent" android:layout_height="wrap_content"android:layout_weight="1" android:text="Button1"/> <Buttonandroid:layout_width="fill_parent" android:layout_height="wrap_content"android:layout_weight="2" android:text="Button2"/> </LinearLayout>
在這裏Button1的Layout_weight=1,Buttong2的Layout_weight=2,運行效果爲:spa
咱們看到,Button1佔了2/3,Button2佔了1/3。若是此時把button2的weight設置成2000,不是說Button2就消失了,而是Button1的寬度幾乎佔滿了屏幕寬度,而屏幕最後一絲細條則是留給Button2的,已近很是小了,沒有顯示出來。截圖以下:設計
得出結論:在layout_width設置爲fill_parent的時候,layout_weight表明的是你的控件要優先儘量的大,但儘量大是有限度的,即fill_parent.xml
2.當控件的屬性android:layout_width="wrap_content"時,佈局文件以下:blog
這時,和fill_parent正好相反,Button1的寬度佔據了屏幕寬度的1/3,而Button2的寬度佔據了屏幕的2/3,若是此時把Button1的weight設置爲2000,按照以前理解,Button1應該小的幾乎在屏幕上看不到,可是錯了,實驗告訴咱們,當Button1的weight很是小時,也要"wrap_content",也就是要保證Button1至少可以顯示。如下是Button1設置weight爲2000時的運行截圖:get
咱們看到,Button1已經足夠小,可是要保證他能顯示出來,所以得出結論:
在layout_width設置爲wrap_content的時候,layout_weight表明的是你的控件要優先儘量的小,但這個小是有限度的,即wrap_content.
當了解這些後,咱們再設計程序時,爲了可以自適應屏幕,不想給控件一個指定的寬度和高度,就可使用這個weight屬性來讓它按本身比例來劃分屏幕高度或者寬度了。