一起Talk Android吧(第四百零一回:如何使用TableLayout布局)
Posted talk_8
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一起Talk Android吧(第四百零一回:如何使用TableLayout布局)相关的知识,希望对你有一定的参考价值。
文章目录
各位看官们,大家好,上一回中咱们说的是"Glide基本用法"的例子,这一回中咱们介绍的例子是"如何使用TableLayout布局"。闲话休提,言归正转,让我们一起Talk android吧!
使用背景
看官们,在项目中如果想让布局中的UI控件以表格形式排列,那么可以使用表格布局(TableLayout),表格的用法和线性布局类似,不过也有一些特殊的用法,我们在本章回中将详细介绍如何使用表格布局
行数与列数
表格中行数和列数等于表格中控件的个数。所有控件按行进行排列,行数为控件数量,列数为一,也就是单列。TabaleLayout中可以包含其它的UI控件,也可以使用TableRow指定行中的内容,TableRow
中可以嵌套其它UI控件,它包含的所有控件组成一行,控件的数量就是列的数量。
总之,在表格布局中,我们只需要向其中添加控件就可以了,系统会自动计算表格布局中的行数和列数。
行高和与列宽
直接添加在TabaleLayout
中的控件以及TableRow
都不能使用layout_width
和layout_width
属性设置宽度和高度,它们的宽度永远是MATCH_PARENT
,高度为WRAP_CONTENT
。也就是说不能整体指定表格中某行或者某列的长度和宽度,但是可以指定行或者列中单元格的长度和宽度,单元格的长宽和宽度由其自身来控制,而且会影响单元格所在的行高和列宽。
每行中子控件的宽度和高度可以自行指定,使用layout_width和layout_width属性来设置宽度和高度,这个和其它控件的指定方法相同。
同列中各个单元格的高度可以不同,但是宽度必须相同,列的宽度等于同列中宽度值最大的单元格的宽度。
同行中各个单元格的高度和宽度都可以不同,行的高度等于同行中高度值最大的单元格的高度。
虽然不能在TabaleLayout中的控件以及TableRow上使用layout_width和layout_width属性,但是可以使用layout_weight属性,这样可以形成宽度和高度按照权重分配的表格,如果权重值都为一,那么就会生成类似Excel表格一样的布局。
压缩与拉伸
表格布局提供了相关的属性来控制布局中单元格的压缩与拉伸,下面是属性名称以及使用方法。我感觉这两个属性的使用场景不多,因为它们需要符合特定的条件才有效果。
<!-- 被压缩的列序号,只有列满时才有效果-->
android:shrinkColumns="1"
<!-- 被拉伸的列序号,只有列不满时才有效果-->
android:stretchColumns="2"
隐藏与显示
表格布局提供了相关的属性来控制布局中单元格的隐藏与显示,下面是属性名称以及使用方法。
<!-- 设置被隐藏的列序号,多个列通过逗号来分隔-->
android:collapseColumns="1,2"
<!-- 位置在第5列-->
android:layout_column="5"
跨行显示
表格布局提供了相关的属性来控制布局中单元格是否可以跨行显示,以及跨越的行数。
<!-- 占用2个行的宽度-->
android:layout_span="2"
示例演示
下面是一个完整的示例,代码中添加了相关的注释以方便大家理解。
<TableLayout
android:stretchColumns="2"
android:layout_width="match_parent"
android:layout_height="200dp">
<!-- 第一行内容,两个列的高度和宽度都不同,行高为50dp-->
<!-- 第一列的宽度为60dp-->
<TableRow>
<TextView
android:layout_width="60dp"
android:text="1"/>
<TextView
android:layout_height="50dp"
android:text="2"/>
<TextView
android:layout_width="60dp"
android:text="2111111112222"/>
<TextView
android:layout_width="60dp"
android:text="222222222"/>
<TextView
android:layout_width="60dp"
android:text="233333333"/>
<TextView
android:layout_width="60dp"
android:text="2444444444"/>
</TableRow>
<!-- 第二行内容,三个列均匀分配宽度,行高为WRAP_CONTENT -->
<!-- 注意第一列的宽度是在均分的基础上了加上了列宽60dp-->
<TableRow>
<TextView
android:layout_weight="1"
android:text="3"/>
<TextView
android:layout_weight="1"
android:text="4"/>
<TextView
android:layout_weight="1"
android:text="5"/>
</TableRow>
<!-- 第三行内容-->
<TableRow>
<TextView
android:text="5"/>
</TableRow>
</TableLayout>
看官们,关于Android中"如何使用表格布局"的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!
以上是关于一起Talk Android吧(第四百零一回:如何使用TableLayout布局)的主要内容,如果未能解决你的问题,请参考以下文章
一起Talk Android吧(第四百零三回:绘图基础知识)
一起Talk Android吧(第四百零六回:管理画布canvas)
一起Talk Android吧(第四百零八回:间接绘制几何图形)