標籤:學習 sed fill 空白 組合 attribute order ati 對齊
六大介面布局方式包括: 線性布局(LinearLayout)、幀布局(FrameLayout)、表格版面配置(TableLayout)、相對布局(RelativeLayout)、絕對布局(AbsoluteLayout)和網格布局(GridLayout) 。
1. LinearLayout線性布局
LinearLayout容器中的組件一個挨一個排列,通過控制android:orientation屬性,可控制各組件是橫向排列還是縱向排列。
LinearLayout的常用XML屬性及相關方法
| XML屬性 |
相關方法 |
說明 |
| android:gravity |
setGravity(int) |
設定布局管理器內組件的對齊 |
| android:orientation |
setOrientation(int) |
設定布局管理器內組件的相片順序,可以設定為horizontal、vertical兩個值之一 |
其中,gravity屬性支援top, left, right, center_vertical, fill_vertical, center_horizontal, fill_horizontal, center, fill, clip_vertical, clip_horizontal。也可以同時指定多種對齊的組合。
LinearLayout子項目支援的常用XML屬性及方法
| XML屬性 |
說明 |
| android:layout_gravity |
指定該子項目在LinearLayout中的對齊 |
| android:layout_weight |
指定子項目在LinearLayout中所佔的權重
|
2. TableLayout表格版面配置
TableLayout繼承自Linearout,本質上仍然是線性布局管理器。表格版面配置採用行、列的形式來管理UI組件,並不需要明確地聲明包含多少行、多少列,而是通過添加TableRow、其他組件來控製表格的行數和列數。
每向TableLayout中添加一個TableRow就代表一行;
每向TableRow中添加一個一個子組件就表示一列,可以通過android:layout_span="n"設定子組件佔據n列;
如果直接向TableLayout添加組件,那麼該組件將直接佔用一行;
3. FrameLayout幀布局
FrameLayout直接繼承自ViewGroup組件。幀布局為每個加入其中的組件建立一個空白的地區(稱為一幀),每個子組件佔據一幀,這些幀會根據gravity屬性執行自動對齊。
如果在同一個地方定義了多個控制項,則後面的控制項覆蓋前面的空間。
4. RelativeLayout相對布局RelativeLayout.LayoutParams裡只能設為boolean的XML屬性
| XML屬性 |
說明 |
| android:layout_centerHorizontal |
設定該子組件是否位於版面配置容器的水平置中 |
| android:layout_centerVertical |
|
| android:layout_centerParent |
|
| android:layout_alignParentBottom |
|
| android:layout_alignParentLeft |
|
| android:layout_alignParentRight |
|
| android:layout_alignParentTop |
RelativeLayout.LayoutParams裡屬性值為其他UI組件ID的XML屬性
| XML屬性 |
說明 |
| android:layout_toRightOf |
控制該子組件位於給出ID組件的右側 |
| android:layout_toLeftOf |
|
| android:layout_above |
|
| android:layout_below |
|
| android:layout_alignTop |
|
| android:layout_alignBottom |
|
| android:layout_alignRight |
|
| android:layout_alignLeft |
5. GridLayout網格布局
GridLayout是Android4.0增加的網格布局控制項,與之前的TableLayout有些相似,它把整個容器劃分為rows × columns個網格,每個網格可以放置一個組件。效能及功能都要比tablelayout好,比如GridLayout布局中的儲存格可以跨越多行,而tablelayout則不行,此外,其渲染速度也比tablelayout要快。
GridLayout提供了setRowCount(int)和setColumnCount(int)方法來控制該網格的行和列的數量。
GridLayout常用的XML屬性和方法說明
| XML屬性 |
相關方法 |
說明 |
| android:alignmentMode |
setAlignmentMode(int) |
設定該布局管理器採用的對齊模式 |
| android:columnCount |
setColumnCount(int) |
設定該網格的列數量 |
| android:columnOrderPreserved |
setColumnOrderPreserved(boolean) |
設定該網格容器是否保留序號 |
| android:roeCount |
setRowCount(int) |
設定該網格的行數量 |
| android:rowOrderPreserved |
setRowOrderPreserved(boolean) |
設定該網格容器是否保留行序號 |
| android:useDefaultMargins |
setUseDefaultMargins(boolean) |
設定該布局管理器是否使用預設的頁面邊界 |
在其中的組件常用的XML屬性和方法說明
| XML屬性 |
說明 |
| android:layout_column |
設定該組件在GridLayout的第幾列 |
| android:layout_columnSpan |
設定該子組件在GridLayout橫向上跨幾列 |
| android:layout_gravity |
設定該子組件採用何種方式佔據該網格的空間 |
| android:layout_row |
設定該子組件在GridLayout的第幾行 |
| android:layout_rowSpan |
設定該子組件在GridLayout縱向上跨幾行 |
6. AbsoluteLayout絕對布局(不推薦)
即Android不提供任何布局控制,而是由開發人員自己通過X座標、Y座標來控制組件的位置。每個組件都可指定如下兩個XML屬性:
Android學習筆記六:六大布局