Android开发实战:从学习到产品
上QQ阅读APP看书,第一时间看更新

3.3 TableLayout:表格布局管理器

表格布局管理器继承自LinearLayout线性布局管理器,用行、列方式来管理容器内的控件,表格布局不需要指定多少行列,布局内每添加一行TableRow表示添加一行,然后在TableRow添加子控件,容器的列数由包含列数最多的行决定。

3.3.1 TableLayout实例与属性详解

TableLayout布局文件实例:

图3-5 表格布局效果图

程序中定义了一个4行2列的表格,运行效果如图3-5所示。

从上述TableLayout布局文件实例中可以清晰地看出,TableLayout内部的子元素是按照表格来布局的,效果也达到了我们的预期。第2行只设置了一列,则只显示一列,第3行设置了1列,指定为第2列,第4行设置了一列内容,指定占据两列的控件,这些都正确无误地实现了,说明这些属性是可以起作用的。下面我们就布局文件中包含的一些常用属性做一些分析:

• android:collapseColumns 指定某一列不显示。

• android:layout_width 设置当前组件的宽度,match_parent表示充满整个父元素,若使用wrap_content则意味着组件多大就多大。

• android:layout_height 设置当前组件的高度,match_parent表示充满整个父元素,若使用wrap_content则意味着组件多大就多大。

• android:visibility 默认为visibility,表示显示;设置为invisibility不显示,但是还要占据位置,留一个空白区域;设置成gone表示真正的完全隐藏。

• android:stretchColumns 为TableLayout容器设置属性,表示被设置的这些列可拉伸(注意:TableLayout中列的索引从0开始)。

• android:shrinkColumns 为TableLayout容器设置属性,表示被设置的这些列可收缩。

• android:layout_column 为容器里面的控件设置属性,指定控件在TableRow中指定列。

• android:layout_span 为容器里面的控件设置属性,指定控件在TableRow中的指定列的数量。

3.3.2 使用代码控制表格布局管理器

TableLayout是LinearLayout类的子类。与LinearLayout一样,TableLayout也可以用Java代码来动态生成、控制布局管理器。与线性布局管理器类似,Android提供了Android.widget. TableLayout和Android.widget.TableRow两个布局管理类,以及Android.widget.TableLayout. LayoutParams和Android.widget.TableRow.LayoutParams两个布局参数类来实现Java代码操作布局管理器。

通过代码生成、控制布局管理器的代码实例如下:

图3-6 代码控制表格布局效果图

这个程序通过Java代码动态生成表格布局管理器,并通过循环方式生成TableRow和TextView ,最终又通过addContentView方法使布局管理器在这个Activity中展示出来。程序实现的效果如图3-6所示。