表格布局继承自线性布局,其本质依旧是线性布局管理器。
- 如果直接向TableLayout中添加组件,则该组件占据一行。
- 向TableLayout中添加行:TableRow
- 列的宽度:取决于该列中最宽的单元格。
- 表格宽度:取决于父容器的宽度。
- 列数:取决于列数最多的行。
- 行为方式有如下3种:
(1)shrinkColumns
:该列单元格可收缩,以适应父容器的宽度。
(2)stretchColumns
:改列单元格可拉伸,以填满父容器。
(3)collapseColumns
:隐藏该列。
xml文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!--定义一个表格布局-->
<!--第2列允许收缩,第3列允许拉伸-->
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:shrinkColumns="1"
android:stretchColumns="2">
<!--直接添加按钮,占据一行-->
<Button
android:id="@+id/btn_A1"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="这个按钮会占据一行"/>
<!--添加一个TableRow-->
<TableRow>
<Button
android:id="@+id/btn_A2_1"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="普通按钮"/>
<Button
android:id="@+id/btn_A2_2"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="收缩按钮"/>
<Button
android:id="@+id/btn_A2_3"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="拉伸按钮"/>
</TableRow>
</TableLayout>
<!--第2个表格布局-->
<!--隐藏第2列-->
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:collapseColumns="1">
<!--直接添加按钮,占据一行-->
<Button
android:id="@+id/btn_B1"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="这个按钮会占据一行"/>
<!--添加一个TableRow-->
<TableRow>
<Button
android:id="@+id/btn_B2_1"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="普通按钮"/>
<!--第2列:被隐藏了-->
<Button
android:id="@+id/btn_B2_2"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="收缩按钮"/>
<Button
android:id="@+id/btn_B2_3"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="拉伸按钮"/>
</TableRow>
</TableLayout>
<!--第3个表格布局:第2列和第3列可以被拉伸-->
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:stretchColumns="1,2">
<!--第1行:直接添加按钮,占据一行-->
<Button
android:id="@+id/btn_C1"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="这个按钮会占据一行"/>
<!--第2行:添加一个TableRow-->
<TableRow>
<Button
android:id="@+id/btn_C2_1"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="普通按钮"/>
<Button
android:id="@+id/btn_C2_2"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="拉伸按钮"/>
<Button
android:id="@+id/btn_C2_3"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="拉伸按钮"/>
</TableRow>
<!--第3行:添加一个TableRow-->
<!--第3行只有两个单元格,因此第3个单元格是空着的-->
<TableRow>
<Button
android:id="@+id/btn_C3_1"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="普通按钮"/>
<Button
android:id="@+id/btn_C3_2"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="拉伸按钮"/>
</TableRow>
</TableLayout>
</LinearLayout>