表格布局(TableLayout),表格布局采用行、列的形式来管理UI组件,TableLayout并不需要明确的声明多少行,多少列,而是通过TableRow、其他组件来控制表格的行数和列数。

每次想TableLayout中添加一个TableRow,TableRow是一个表格行,也是容器;因此他也可以不断的添加组件,没添加一个组件就是增加一列。

如果直接想TableLayout中添加组件的话,那么他就会独自占据一行的位置。

在表格布局中,列的宽度取决于该列中最宽的那列的宽度,整个表格布局的宽度取决于父容器的宽度(默认是占满父容器本身)。

在表格布局管理器中,可以为单元格设置如下三种行为方式:

Shrinkable:如果某列被设成这个属性的话,那么该列的所有单元格的宽度可以被收缩,以保证该表格适应父容器的宽度。

Stretchable:如果某列被设成这个属性的话,那么该列的所有单元格的宽度可以被拉伸,以保证组件能完全填满表格空余空间。

Collapsed:如果某列被设成这个属性的话,那么该列的所有单元格都会被掩藏。

下面程序是采用TableLayout布局

layout/main.xml

1 <?xml version="1.0" encoding="utf-8"?>
  2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3     android:orientation="vertical"
  4     android:layout_width="fill_parent"
  5     android:layout_height="fill_parent"
  6     >
  7 <!-- 定义第一个表格布局,指定第2列允许收缩,第3列允许拉伸 -->
  8 <TableLayout android:id="@+id/TableLayout01" 
  9     android:layout_width="fill_parent" 
 10     android:layout_height="wrap_content"
 11     android:shrinkColumns="1"
 12     android:stretchColumns="2"
 13 >
 14 <!-- 直接添加按钮,它自己会占一行 -->
 15 <Button android:id="@+id/ok1" 
 16     android:layout_width="wrap_content"
 17     android:layout_height="wrap_content"
 18     android:text="独自一行的按钮"
 19     />
 20 <!-- 添加一个表格行 -->
 21 <TableRow>
 22 <!-- 为该表格行添加3个按钮 -->
 23 <Button android:id="@+id/ok2" 
 24     android:layout_width="wrap_content"
 25     android:layout_height="wrap_content"
 26     android:text="普通按钮"
 27     />     
 28 <Button android:id="@+id/ok3" 
 29     android:layout_width="wrap_content"
 30     android:layout_height="wrap_content"
 31     android:text="允许被收缩的按钮"
 32     /> 
 33 <Button android:id="@+id/ok4" 
 34     android:layout_width="wrap_content"
 35     android:layout_height="wrap_content"
 36     android:text="允许被拉伸的按钮"
 37     />
 38 </TableRow>    
 39 </TableLayout>
 40 <!-- 定义第二个表格布局 ,指定第二列隐藏-->
 41 <TableLayout android:id="@+id/TableLayout01" 
 42     android:layout_width="fill_parent" 
 43     android:layout_height="wrap_content"
 44     android:collapseColumns="1"
 45 >
 46 <!-- 直接添加按钮,它自己会占一行 -->
 47 <Button android:id="@+id/ok5" 
 48     android:layout_width="wrap_content"
 49     android:layout_height="wrap_content"
 50     android:text=" 独自一行的按钮 "
 51     />
 52 <!--定义一个表格行-->
 53 <TableRow>
 54 <!-- 为该表格行添加3个按钮 -->
 55 <Button android:id="@+id/ok6" 
 56     android:layout_width="wrap_content"
 57     android:layout_height="wrap_content"
 58     android:text="普通按钮1"
 59     />     
 60 <Button android:id="@+id/ok7" 
 61     android:layout_width="wrap_content"
 62     android:layout_height="wrap_content"
 63     android:text="被隐藏的按钮"
 64     /> 
 65 <Button android:id="@+id/ok8" 
 66     android:layout_width="wrap_content"
 67     android:layout_height="wrap_content"
 68     android:text="普通按钮 3"
 69     />
 70 </TableRow>    
 71 </TableLayout>
 72 <!-- 定义第三个表格布局 ,指定第2、3两列可以被拉伸-->
 73 <TableLayout android:id="@+id/TableLayout01" 
 74     android:layout_width="fill_parent" 
 75     android:layout_height="wrap_content"
 76     android:stretchColumns="1,2"
 77 >
 78 <!-- 直接添加按钮,它自己会占一行 -->
 79 <Button android:id="@+id/ok9" 
 80     android:layout_width="wrap_content"
 81     android:layout_height="wrap_content"
 82     android:text="独自一行的按钮"
 83     />
 84 <!--定义一个表格行-->
 85 <TableRow>
 86 <!-- 为该表格行添加3个按钮 -->
 87 <Button android:id="@+id/ok10" 
 88     android:layout_width="wrap_content"
 89     android:layout_height="wrap_content"
 90     android:text="普通按钮"
 91     />     
 92 <Button android:id="@+id/ok11" 
 93     android:layout_width="wrap_content"
 94     android:layout_height="wrap_content"
 95     android:text="允许被拉伸的按钮"
 96     /> 
 97 <Button android:id="@+id/ok12" 
 98     android:layout_width="wrap_content"
 99     android:layout_height="wrap_content"
100     android:text="允许被拉伸的按钮"
101     />
102 </TableRow>    
103 <!--定义一个表格行-->
104 <TableRow>
105 <!-- 为该表格行添加2个按钮 -->
106 <Button android:id="@+id/ok13" 
107     android:layout_width="wrap_content"
108     android:layout_height="wrap_content"
109     android:text="普通按钮"
110     />     
111 <Button android:id="@+id/ok14" 
112     android:layout_width="wrap_content"
113     android:layout_height="wrap_content"
114     android:text="允许被拉伸的按钮"
115     />
116 </TableRow>    
117 </TableLayout>
118 </LinearLayout>

上面的代码里面我们用了三次TableLayout布局:

第一个表格我们对第二列实现了收缩,第三列实现了拉伸;

第二个表格我们对第二列实现了掩藏;

第三个表格我们同时对第二、三列实现了拉伸。这些是这几个属性的使用方法