佈局管理器的繼承關係java
爲了適應各式各樣的界面風格,Android系統提供了6種佈局,這6種佈局分別是:android
LinearLayout(線性佈局)、TableLayout(表格佈局)、RelativeLayout(相對佈局)、AbsoluteLayout(絕對佈局)、FrameLayout(框架佈局)、GrilLayout(網格佈局)。框架
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > </LinearLayout>
xmlns:android="http://schemas.android.com/apk/res/android"
是android的命名空間。ide
所謂的線性佈局管理器,即它內部的視圖(控件)按線性方式排列。佈局
線性佈局管理器提供了兩種線性方式:一是水平佈局,按水平方向佈置控件;二是垂直方向、按垂直方向佈置控件。spa
其中andorid:orientaion表示的正是設置線性佈局的方向,屬性有:vertical 和 horizontal 分別表示垂直佈局和水平佈局。code
LinearLayout經常使用XML屬性xml
android:baselineAligned | 設置該佈局是(true)否(false)與子元素基線對齊。 |
android:divider | 設置垂直佈局時兩個按鈕之間的分隔條。 |
android:gravity | 設置佈局內組件(子元素)的對齊方式。繼承 屬性: top, bottom, left, right, center_vertical,center_horizontal,fill_vertical, fill_horizontal,center, fill,clip_vertical, clip_horizontal;ip 可用 | 組合多種對齊方式 : 如 left|center_vertical 左側垂直居中。 |
android:measureWithLargestChild | 該屬性爲true的時候, 全部帶權重的子元素都會具備最大子元素的最小尺寸。 |
android:orientation | 設置佈局內組件排列方式, 設置爲 horizontal(水平), vertical(垂直)。 |
線性部件中子元素支持的經常使用屬性:
android:layou_gravity :指定子元素在LinearLayout(父容器)中的對齊方式。
android:layou_weight :指定子元素在LinearLayout中所佔的權重。
提示:
與 android:layou_gravity 顯示的有android:gravity 是父容器用於指定子元素的對其方式。
注意:
LinearLayout不會換行,當組件一個挨着一個排列到頭時,超出的組件就不會被顯示出來了。
表格佈局管理器、是將其中的視圖按行、列進行排列。TableLayou並不須要指定行數和列數,而是經過添加TalbleRow控制行數、其餘組件來控制列數。
直接向TableLayout中添加組件, 就至關於直接添加了一行,TableLayout中列寬由該列最寬的單元格決定。
表格佈局中單元格的行爲方式
Shrinkable : 該列全部單元格寬度能夠被收縮, 保證表格能適應父容器的寬度;
Stretchable : 該列全部單元格的寬度能夠被拉伸, 保證表格能徹底填滿表格剩餘空間;
Collapsed : 該列全部單元格會被隱藏;
TableLayout經常使用XML屬性
android:collapsedColumns | 設置須要被隱藏的列的序號, 多列序號間用逗號隔開。 |
android:stretchColumns | 設置容許被拉伸的列的序列號, 多個序號間用逗號隔開。 |
android:shrinkableColumns | 設置容許被收縮的列的序號, 多個序號間用逗號隔開。 |
<!-- 第一個表格第2列容許收縮,第3列容許拉伸 --> <TableLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:shrinkColumns="0" android:stretchColumns="1" > <!-- 一行3個按鈕 --> <TableRow> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="可收縮按鈕" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="可拉伸按鈕" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="普通按鈕" /> </TableRow> </TableLayout>
相對佈局容器中 子組件 的 位置 是以 兄弟組件、父容器 的位置做爲參照來決定的。
RelativeLayout 的XML屬性
android:gravity | 設置該佈局容器內各子組件的對齊方式。 |
android:ignoreGravity | 設置哪一個組件不受gravity 屬性影響。 |
只能設爲boolean值的XML屬性
android:layout_centerHorizontal 是否水平居中於父容器中
android:layout_centerVertical 是否垂直居中於父容器中
android:layout_centerInParent 是否位於中央於父容器中
android:layout_alignParentBottom 是否底端對齊於父容器中
android:layout_alignParentTop 是否頂端對齊於父容器中
android:layout_alignParentLeft 是否左邊對齊於父容器中
android:layout_alignParentRight 是否右邊對齊於父容器中
只能設爲其餘UI組件ID值的XML屬性
android:layout_toLeftOf 位於所給 id 組件左側
android:layout_toRightOf 位於所給 id 組件右側
android:layout_above 位於所給id組件的上邊
android:layout_below 位於所給id組件的下方
android:layout_alignTop 與所給id組件頂部對齊
android:layout_alignBottom 與所給id組件底部對齊
android:layout_alignLeft 與所給id組件左邊對齊
android:layout_alignRight 與所給id組件右邊對齊
以X座標,Y座標來控制組件的位置,佈局容器再也不管理組件位置, 大小, 這些均可自定義。
AbsoluteLayout XML屬性
android:layout_x | 指定組件的x座標 |
android:layout_y |
指定組件的y座標 |
android:layout_width<height> |
是指定寬度是否充滿父容器, 或者僅僅包含子元素的 |
android:width<height> |
指定組件的寬度 |
又名幀佈局。幀佈局中,每一個組件佔據一幀(層),這些幀會根據gravity屬性執行自動對齊(把組件一個個疊加在一塊兒)。
FrameLayout 經常使用XML屬性
android:foreground |
設置該幀佈局 的前景圖像 |
android:foregroundGravity |
定義繪製前景圖像的 gravity屬性(對齊 屬性) |
GrilLayout 的XML屬性
android:alignmentMode |
設置網格佈局管理器的對齊模式 |
android:columnCount |
設置該網格佈局的列數 |
android:columnOrderPreserved |
設置網格容器是否保留列序列號 |
android:rowCount |
設置該網格的行數 |
android:rowOrderPreserved |
設置該網格容器是否保留行序列號 |
android:useDefaultMargins |
設置該佈局是否使用默認的頁邊距 |