一起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_widthlayout_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吧(第四百零八回:间接绘制几何图形)

一起Talk Android吧(第四百零九回:绘制不规则图形)

一起Talk Android吧(第四百零五回:画布的变换)

一起Talk Android吧(第四百零四回:画笔常用参数设置)