Android Layout 佈局 (三)

Android TableLayout 佈局

TableLayout ,適用於多行多列的佈局格式,每個 TableLayout 是由多個 TableRow 組成, 一個 TableRow 就表示 TableLayout 中的每一行,這一行可以由多個子元素組成。TableLayout 和 TableRow 都是 LineLayout 的子類別。

但是 TableRow 的參數 android:orientation 屬性值固定為 horizontal ,且 android:layout_width=MATCH_PARENTandroid:layout_height=WRAP_CONTENT

所以 TableRow 實際是一個橫向的線性佈局,所以子元素寬度和高度一致。

Imgur

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:shrinkColumns="0,1,2"
android:stretchColumns="0,1,2"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TableRow android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button android:gravity="center"
android:padding="10dp"
android:text="1"/>

<Button android:gravity="center"
android:padding="10dp"
android:text="2"/>

<Button android:gravity="center"
android:padding="10dp"
android:text="3"/>
</TableRow>
<TableRow android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button android:gravity="center"
android:padding="10dp"
android:text="4"/>

<Button android:gravity="center"
android:padding="10dp"
android:text="5"/>

<Button android:gravity="center"
android:padding="10dp"
android:text="6"/>
</TableRow>
<TableRow android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button android:gravity="center"
android:padding="10dp"
android:text="7"/>

<Button android:gravity="center"
android:padding="10dp"
android:text="8"/>

<Button android:gravity="center"
android:padding="10dp"
android:text="9"/>
</TableRow>
</TableLayout>

由於 TableLayout 繼承 LinearLayout,所以 LinearLayout 的所有屬性都支持外, TableLayout 還支持3個屬性 :

  • android:collapseColumns : 設置需要被隱藏的列的序列號(序號從0開始),多個序號之間用逗號「,」分隔。
  • android:shrinkColumns:設置允許被收縮的列的列序號(序號從0開始),多個序號之間用逗號「,」分隔。
  • android:stretchColumns:設置允許被拉伸的列的列序號(序號從0開始),多個序號之間用逗號「,」分隔。

TableLayout 適用於一些中規中矩且不會一直變動的表格或者輸入介面。