TableLayout表格佈局,將子元素的位置分配到行或列中。TableLayout佈局由許多的TableRow(行) 組成,它沒有列的概念,列是由行中的控件數目決定的。TableLayout佈局也是實際中常用的佈局方式。
TableLayout佈局不會顯示行、列 、單元格的邊框線。TableLayout佈局應用如圖7-17所示。
圖7-17 TableLayout1
TableLayout佈局文件請參考代碼清單7-20,完整代碼請參考chapter7_5工程中tablelayout1.xml代碼部分(chapter7_5/res/layout/tablelayout1.xml)。
【代碼清單7-20】
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<TableRow>
<TextView android:text="@string/row1_1" android:padding="3dip" />
<TextView android:text="@string/row1_2" android:padding="3dip" />
<TextView android:text="@string/row1_3" android:padding="3dip" />
</TableRow>
<TableRow>
<TextView android:text="@string/row2_1" android:padding="3dip" />
<TextView android:text="@string/row2_2" android:padding="3dip" />
<TextView android:text="@string/row2_3" android:padding="3dip" />
</TableRow>
<TableRow>
<TextView android:text="@string/row3_1" android:padding="3dip" />
<TextView android:text="@string/row3_2" android:padding="3dip" />
<TextView android:text="@string/row3_3" android:padding="3dip" />
</TableRow>
<TableRow>
<TextView android:text="@string/row4_1" android:padding="3dip" />
<TextView android:text="@string/row4_2" android:padding="3dip" />
<TextView android:text="@string/row4_3" android:padding="3dip" />
</TableRow>
<TableRow>
<TextView android:text="@string/row5_1" android:padding="3dip" />
<TextView android:text="@string/row5_2" android:padding="3dip" />
<TextView android:text="@string/row5_3" android:padding="3dip" />
</TableRow>
<TableRow>
<TextView android:text="@string/row6_1" android:padding="3dip" />
<TextView android:text="@string/row6_2" android:padding="3dip" />
<TextView android:text="@string/row6_3" android:padding="3dip" />
</TableRow>
</TableLayout>
下面再看一個合並單元格TableLayou佈局應用圖7-18所示。
圖7-18 TableLayout2
TableLayout佈局文件請參考代碼清單7-21,完整代碼請參考chapter7_5工程中tablelayout2.xml代碼部分(chapter7_5/res/layout/tablelayout2.xml)。
【代碼清單7-21】
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"
android:stretchColumns="0,1,2">
<TableRow>
<TextView android:text="@string/row1_1" android:padding="3dip" />
<TextView android:text="@string/row1_2" android:padding="3dip" />
<TextView android:text="row1_3" android:padding="3dip" />
</TableRow>
<TableRow>
<TextView android:text="@string/row2_1" android:padding="3dip" />
<TextView android:text="@string/row2_2" android:padding="3dip"
android:layout_span="2" android:background="#ff0060" />
</TableRow>
<TableRow>
<TextView android:text="@string/row3_1" android:padding="3dip" />
<!– android:layout_column="1" –>
<TextView android:text="@string/row3_2" android:padding="3dip" />
<TextView android:text="row3_3" android:padding="3dip" />
</TableRow>
<TableRow>
<TextView android:text="@string/row4_1" android:padding="3dip" />
<TextView android:text="@string/row4_2" android:padding="3dip" />
<TextView android:text="row4_3" android:padding="3dip" />
</TableRow>
<TableRow>
<TextView android:text="@string/row5_1" android:padding="3dip" />
<TextView android:text="@string/row5_2" android:padding="3dip" />
<TextView android:text="row5_3" android:padding="3dip" />
</TableRow>
<TableRow>
<TextView android:text="@string/row6_1" android:padding="3dip" />
<TextView android:text="@string/row6_2" android:padding="3dip" />
<TextView android:text="row6_3" android:padding="3dip" />
</TableRow>
</TableLayout>
TableLayout標簽內的android:stretchColumns="0,1,2"屬性是第一列、第二列、第三列自動調節列寬。<TableRow>內的TextView控件中的屬性android:layout_span="2"是合並一個單元格,如圖7-18顯示的粉色背景就是合並的單元格。
出自《Android開發案例驅動教程》第七章