|
9當(dāng)填充屬性是wrap_content時,隨著layout_weight的變大,該控件的優(yōu)先級越高,
當(dāng)填充屬性是fill_parent時,隨著layout_wight的變大,該控件的優(yōu)先級越低
在網(wǎng)上看了一些對Layout_weight的講解,有些說的比較片面,只列舉了一種情況,然后自己通過實驗和一些比較好的文章總結(jié)了一下,特此記錄下來,以備以后所用。Layout_weight是線性布局,也就是LinearLayout里面用到的,下面通過實驗來看這個Layout_weight的特性。
1.當(dāng)控件的屬性android:layout_width="fill_parent"時,布局文件如下:
Xml代碼
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_weight="1"
android:text="Button1" />
<Button android: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,運(yùn)行效果為:
我們看到,Button1占了2/3,Button2占了1/3。如果此時把button2的weight設(shè)置成2000,不是說Button2就消失了,而是Button1的寬度幾乎占滿了屏幕寬度,而屏幕最后一絲細(xì)條則是留給Button2的,已近非常小了,沒有顯示出來。截圖如下:
得出結(jié)論:在layout_width設(shè)置為fill_parent的時候,layout_weight代表的是你的控件要優(yōu)先盡可能的大,但盡可能大是有限度的,即fill_parent.
2.當(dāng)控件的屬性android:layout_width="wrap_content"時,布局文件如下:
Xml代碼
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_weight="1"
android:text="Button1" />
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_weight="2"
android:text="Button2" />
</LinearLayout>
同樣,Button1的weight設(shè)置為1,Button2的weight設(shè)置為2,但是效果與fill_parent的效果截然相反。運(yùn)行效果如下:
這時,和fill_parent正好相反,Button1的寬度占據(jù)了屏幕寬度的1/3,而Button2的寬度占據(jù)了屏幕的2/3,如果此時把Button2的weight設(shè)置為2000,按照之前理解,Button1應(yīng)該小的幾乎在屏幕上看不到,但是錯了,實驗告訴我們,當(dāng)Button1的weight非常小時,也要"wrap_content",也就是要保證Button1至少能夠顯示。以下是Button2設(shè)置weight為2000時的運(yùn)行截圖:
我們看到,Button1已經(jīng)足夠小,但是要保證他能顯示出來,因此得出結(jié)論:
在layout_width設(shè)置為wrap_content的時候,layout_weight代表的是你的控件要優(yōu)先盡可能的小,但這個小是有限度的,即wrap_content.
當(dāng)了解這些后,我們再設(shè)計程序時,為了能夠自適應(yīng)屏幕,不想給控件一個指定的寬度和高度,就可以使用這個weight屬性來讓它按自己比例來劃分屏幕高度或者寬度了。
|
上一篇: 【轉(zhuǎn)】Android應(yīng)用及應(yīng)用管理下一篇: 路徑規(guī)劃
|