表格布局(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布局:
第一个表格我们对第二列实现了收缩,第三列实现了拉伸;
第二个表格我们对第二列实现了掩藏;
第三个表格我们同时对第二、三列实现了拉伸。这些是这几个属性的使用方法