為了適應(yīng)各式各樣的界面風(fēng)格,Android系統(tǒng)提供了5種布局,這5種布局分別是:
LinearLayout(線性布局)
TableLayout(表格布局)
RelativeLayout(相對布局)
AbsoluteLayout(絕對布局)
FrameLayout(框架布局)
利用這五種布局,可以在屏幕上將控件隨心所欲的擺放,而且控件的大小和位置會(huì)隨著屏幕大小的變化作出相應(yīng)的調(diào)整。下面是這五個(gè)布局在View的繼承體系中的關(guān)系:
一,LinearLayout(線性布局)
在一個(gè)方向上(垂直或水平)對齊所有子元素
一個(gè)垂直列表每行將只有一個(gè)子元素(無論它們有多寬)
一個(gè)水平列表只是一列的高度(最高子元素的高度來填充)
下面是一個(gè)簡單的線性布局的例子:
01
02
03 xmlns:android="http://schemas.android.com/apk/res/android"
04 android:layout_width="match_parent"
05 android:layout_height="match_parent" android:orientation="vertical">
06
07
08 android:id="@+id/editText1"
09
10 android:layout_height="wrap_content"
11
12 android:layout_width="fill_parent">
13
14
15
16
17 android:layout_height="fill_parent"
18
19 android:layout_width="fill_parent"
20
21 android:gravity="right">
22
23
24 android:text="Button"
25
26 android:layout_width="wrap_content"
27
28 android:layout_height="wrap_content">
29
30
31 android:id="@+id/button1"
32
33 android:layout_width="wrap_content"
34
35 android:layout_height="wrap_content">
36
37
復(fù)制代碼
最外層布局為垂直線性布局,寬度為整個(gè)屏幕(fill_parent),高度為剛好適合子控件(wrap_content)。然后依次添加一個(gè)EditText,一個(gè)水平布局的LinearLayout,在這個(gè)線性布局里面,擺放兩個(gè)Button,該線性布局的gravity屬性設(shè)置為”right”,所以里面的兩個(gè)Button靠右顯示。
二,TableLayout(表格布局)
把子元素放入到行與列中
不顯示行、列或是單元格邊界線
單元格不能橫跨行,如HTML中一樣
表格布局模型以行列的形式管理子控件,每一行為一個(gè)TableRow的對象,當(dāng)然也可以是一個(gè)View的對象。TableRow可以添加子控件,每添加一個(gè)為一列。
android:layout_colum官方解釋:The index of the column in which this child should be,也即是設(shè)置該控件在TableRow中所處的列。
android:layout_span官方解釋:Defines how many columns this child should span,也即是設(shè)置該控件所跨越的列數(shù)。
android:collapseColumns官方解釋:The 0 based index of the columns to collapse. The column indices must be separated by a comma: 1, 2, 5.也即是將TableLayout里面指定的列隱藏,若有多列需要隱藏,請用逗號將需要隱藏的列序號隔開。
android:stretchColumns官方解釋:The 0 based index of the columns to stretch. The column indices must be separated by a comma: 1, 2, 5. You can stretch all columns by using the value “*” instead. Note that a column can be marked stretchable and shrinkable at the same time.也即是設(shè)置指定的列為可伸展的列,可伸展的列會(huì)盡量伸展以填滿所有可用的空間,若有多列需要設(shè)置為可伸展,請用逗號將需要伸展的列序號隔開。
android:shrinkColumns官方解釋:The 0 based index of the columns to shrink. The column indices must be separated by a comma: 1, 2, 5. You can shrink all columns by using the value “*” instead. 設(shè)置指定的列為可收縮的列。當(dāng)可收縮的列太寬以至于讓其他列顯示不全時(shí),會(huì)縱向延伸空間。當(dāng)需要設(shè)置多列為可收縮時(shí),將列序號用逗號隔開。
下面用一個(gè)例子簡單說明TableLayout的用法:
01
02
03 android:layout_width="fill_parent"
04 android:layout_height="fill_parent"
05 android:stretchColumns="1">
06
07
08 android:layout_column="1"
09 android:padding="3dip" android:text="Row1"/>
10
11 android:text="1"
12 android:gravity="right"
13 android:padding="3dip" />
14
15
16 android:layout_height="2dip"
17 android:background="#FF909090" />
18
19
20 android:text="*"
21 android:padding="3dip" />
22
23 android:text="Row12"
24 android:padding="3dip" />
25
26 android:text="2"
27 android:gravity="right"
28 android:padding="3dip" />
29
30
31 android:layout_height="2dip"
32 android:background="#FF909090" />
33
34
35 android:layout_column="1"
36 android:text="Row13"
37 android:padding="3dip" />
38
39
復(fù)制代碼
三、RelativeLayout(相對布局)
相對布局的子控件會(huì)根據(jù)它們所設(shè)置的參照控件和參數(shù)進(jìn)行相對布局。參照控件可以是父控件,也可以是其它子控件,但是被參照的控件必須要在參照它的控件之前定義。下面是一個(gè)簡單的例子:
01
02
03
04 android:layout_width="fill_parent"
05 android:layout_height="fill_parent"
06 >
07
08 android:id="@+id/aclock"
09 android:layout_width="wrap_content"
10 android:layout_height="wrap_content"
11 android:layout_centerInParent="true" />
12
13 android:id="@+id/dclock"
14 android:layout_width="wrap_content"
15 android:layout_height="wrap_content"
16 android:layout_below="@id/aclock"
17 android:layout_alignLeft="@id/aclock"
18 android:layout_marginLeft="40px" />
19
20 android:layout_width="wrap_content"
21 android:layout_height="wrap_content"
22 android:text="當(dāng)前時(shí)間:"
23 android:layout_toLeftOf="@id/dclock"
24 android:layout_alignTop="@id/aclock"/>
25
復(fù)制代碼
四、AbsoluteLayout(絕對布局)
絕對布局的子控件需要指定相對于此坐標(biāo)布局的橫縱坐標(biāo)值,否則將會(huì)像框架布局那樣被排在左上角。手機(jī)應(yīng)用需要適應(yīng)不同的屏幕大小,而這種布局模型不能自適應(yīng)屏幕尺寸大小,所以應(yīng)用的相對較少。下面以一個(gè)例子簡單說明絕對布局:
01
02
03 android:layout_width="fill_parent"
04 android:layout_height="fill_parent"
05 >
06
07 android:layout_width="wrap_content"
08 android:layout_height="wrap_content"
09 android:layout_x="10px"
10 android:layout_y="10px" android:text="Textview"/>
11
12 android:layout_width="wrap_content"
13 android:layout_height="wrap_content"
14 android:layout_x="30px"
15 android:layout_y="30px" android:text="Textview"/>
16
17 android:layout_width="wrap_content"
18 android:layout_height="wrap_content"
19 android:layout_x="50px"
20 android:layout_y="50px" android:text="Textview"/>
21
復(fù)制代碼
五、FrameLayout(框架布局)
框架布局是最簡單的布局形式。所有添加到這個(gè)布局中的視圖都以層疊的方式顯示。第一個(gè)添加的控件被放在最底層,最后一個(gè)添加到框架布局中的視圖顯示在最頂層,上一層的控件會(huì)覆蓋下一層的控件。這種顯示方式有些類似于堆棧。下面舉一個(gè)簡單的例子
01
02
03 android:layout_width="fill_parent" android:layout_height="fill_parent">
04
05 android:layout_height="match_parent"
06 android:layout_width="match_parent">
07
08 android:id="@+id/button1"
09 android:layout_width="wrap_content"
10 android:layout_height="wrap_content">
11
12
13 android:id="@+id/linearLayout3"
14 android:layout_height="match_parent"
15 android:gravity="bottom|right">
16
17 android:id="@+id/button3"
18 android:layout_width="wrap_content"
19 android:layout_height="wrap_content">
20
21
22 android:id="@+id/linearLayout2"
23 android:layout_width="match_parent"
24 android:gravity="right">
25
26 android:id="@+id/button2"
27 android:layout_width="wrap_content"
28 android:layout_height="wrap_content">
29
30
31 android:id="@+id/LinearLayout01"
32 android:layout_height="match_parent"
33 android:gravity="bottom|left">
34
35 android:text="Button"
36 android:layout_width="wrap_content"
37 android:layout_height="wrap_content">
38
39
復(fù)制代碼
下面介紹一下RelativeLayout用到的一些重要的屬性:
第一類:屬性值為true或false
android:layout_centerHrizontal 水平居中
android:layout_centerVertical 垂直居中
android:layout_centerInparent 相對于父元素完全居中
android:layout_alignParentBottom 貼緊父元素的下邊緣
android:layout_alignParentLeft 貼緊父元素的左邊緣
android:layout_alignParentRight 貼緊父元素的右邊緣
android:layout_alignParentTop 貼緊父元素的上邊緣
android:layout_alignWithParentIfMissing 如果對應(yīng)的兄弟元素找不到的話就以父元素做參照物
第二類:屬性值必須為id的引用名“@id/id-name”
android:layout_below 在某元素的下方
android:layout_above 在某元素的的上方
android:layout_toLeftOf 在某元素的左邊
android:layout_toRightOf 在某元素的右邊
android:layout_alignTop 本元素的上邊緣和某元素的的上邊緣對齊
android:layout_alignLeft 本元素的左邊緣和某元素的的左邊緣對齊
android:layout_alignBottom 本元素的下邊緣和某元素的的下邊緣對齊
android:layout_alignRight 本元素的右邊緣和某元素的的右邊緣對齊
第三類:屬性值為具體的像素值,如30dip,40px
android:layout_marginBottom 離某元素底邊緣的距離
android:layout_marginLeft 離某元素左邊緣的距離
android:layout_marginRight 離某元素右邊緣的距離
android:layout_marginTop 離某元素上邊緣的距離
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。