一.LinearLayout(線性布局):
LinearLayout是一行或列只能放置一個控制項的先行布局,現在看一個執行個體:
activity_main.xml :
運行圖片:
從可以看出控制項是垂直排列的,我們通過android:orientation="vertical"來設定LinearLayout是垂直排列的。
講解常用的公用屬性:
android:layout_width 指定控制項或視圖組的寬度
android:layout_height 指定控制項或視圖組的高度
android:layout_marginTop 指定控制項或視圖組頂邊額外的空間
android:layout_marginBottom 指定控制項或視圖組底邊額外的空間
android:layout_marginLeft 指定控制項或視圖組左邊的額外空間
android:layout_marginRight 指定控制項或視圖組右邊額外空間
其中為講解下layout_width和layout_height中設定屬性的意思:
1).fill_parent:
設定一個構件的布局為fill_parent將強制性地使構件擴充,以填充布局單元內儘可能多的空間。這跟Windows控制項的dockstyle屬性大體一致。設定一個頂部布局或控制項為fill_parent將強制性讓它布滿整個螢幕。
2).match_parent:
Android2.2中match_parent和fill_parent是一個意思 .兩個參數意思一樣,match_parent更貼切,於是從2.2開始兩個詞都可以用。那麼如果考慮低版本的使用方式你就需要用fill_parent了
3).wrap_content:
設定一個視圖的尺寸為wrap_content將強制性地使視圖擴充以顯示全部內容,布局元素將根據內容更改大小。設定一個視圖的尺寸為wrap_content大體等同於設定Windows控制項的Autosize屬性為True。
當把上面布局中的android:orientation="vertical"改成android:orientation="horizontal",這就是水平布局:
例子(修改上面的布局檔案):
運行圖片:
我們從圖可以看出當使用水平布局時,控制項佔據的是一列,
android:background 該屬性是設定背景顏色。
android:layout_width 在設定該屬性的時候我沒有在使用給的三個屬性值,而是自己定義的,這時候我們就需要瞭解下android的度量單位:
1).dp -- 與密度無關的像素,1dp相當於160dpi的螢幕上的1像素,在布局中當對控制項指定尺寸時,推薦將dp作為度量單位。
2).sp -- 與比例無關的像素,與dp類似,推薦指定字型大小。
3).pt -- 磅,1磅等於1/72英寸(基於螢幕的物理尺寸)。
4).px -- 像素,對應螢幕上的實際尺寸,不建議使用此單位,因為您的應用程式會在不同螢幕尺寸的裝置上可能不能正確顯示。
二.RelativeLayout(相對布局):
在很多時候線性布局不能滿足我們的要求,例如我們需要在一行顯示多個控制項,這時我們就需要RelativeLayout來進行相對布局,RelativeLayout允許子項目指定他們相對於其他元素或父元素的位置(通過ID指定)。
常用的屬性:
android:layout_above 將該控制項的底部至於給定ID的控制項之上
android:layout_below 將該控制項的頂部至於給定ID的控制項之下
android:layout_toLeftOf 將該控制項的右邊緣和給定的ID的控制項的左邊緣對齊
android:layout_toRightOf 將該控制項的左邊緣和給定ID的控制項的右邊緣對齊
android:layout_alignRaseline 該控制項的baseline和給定ID的控制項的baseline對齊
android:layout_alignBottom 將該控制項的底部邊緣與給定ID控制項的底部邊緣
android:layout_alignLeft 將該控制項的左邊緣與給定的ID控制項的左邊緣對齊
android:layout_alignRight 將該控制項的右邊緣與給定ID控制項的右邊緣對齊
android:layout_alignTop 將給定控制項的頂部邊緣與給定ID控制項的頂部對齊
android:layout_alignParentBottom 如果該值為true,則將該控制項的底部和父控制項的底部對齊
android:layout_alignParentLeft 如果該值為true,則將該控制項的左邊與父控制項的左邊對齊
android:layout_alignParentRight 如果該值為true,則將該控制項的右邊與父控制項的右邊對齊
android:layout_alignParentTop 如果該值為true,則將控制項的頂部與父控制項的頂部對齊
android:layout_centerHorizontal 如果值為真,該控制項將被置於水平方向的中央。
android:layout_centerInParent 如果值為真,該控制項將被置於父控制項的水平方向和垂直方向的中央
android:layout_centerVertical 如果值為真,該控制項被置於垂直方向的中央
android:layout_marginLeft 這是外邊距。
android:layout_marginTop 上位移的值;(相對於上邊沿移動的值 xxdp)
android:layout_marginBottom 下位移的值;
android:layout_marginLeft 左位移的值;
android:layout_marginRight 右位移的值;
執行個體示範:
運行圖片:
對於上面這個例子線性布局就是無法實現的,而使用相對布局則輕鬆實現。
三.TableLayout(表單布局):
TableLayout將子項目的位置分配到行或列。TableLayout是由許多個TableRow組成,其中放著0個或多個控制項。
執行個體:
運行圖片:
在位於Password TextView之下的單元格用填充,當如果不這樣做時,則登陸按鈕將顯示在Password TextView之下。
四. FrameLayout布局:
FrameLayout是最簡單的一個布局,在這個布局中,整個介面被當成一塊空白備用地區,所有的子項目都不能被指定放置的位置,它們統統放於這塊地區的左上方,並且後面的子項目直接覆蓋在前面的子項目之上,將前面的子項目部分和全部遮擋。
執行個體示範:
<frameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"></frameLayout>
運行圖片:
FrameLayout布局是把控制項不斷堆疊在前一個上面。
五.AbsoluteLayout(絕對位置布局): AbsoluteLayout可用於指定其子項目的確切位置(android:layout_x和android:layout_y),不過這種布局不推薦使用,因為不同解析度的螢幕上顯示的位置會不相同。這種布局不過多介紹了。