• 一起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"
    
    • 1
    • 2
    • 3
    • 4

    隐藏与显示

    表格布局提供了相关的属性来控制布局中单元格的隐藏与显示,下面是属性名称以及使用方法。

    
        android:collapseColumns="1,2"
    
        android:layout_column="5"
    
    • 1
    • 2
    • 3
    • 4

    跨行显示

    表格布局提供了相关的属性来控制布局中单元格是否可以跨行显示,以及跨越的行数。

    
        android:layout_span="2"
    
    • 1
    • 2

    示例演示

    下面是一个完整的示例,代码中添加了相关的注释以方便大家理解。

        <TableLayout
            android:stretchColumns="2"
            android:layout_width="match_parent"
            android:layout_height="200dp">
    
    
            <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>
    
            
    
            <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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50

    看官们,关于Android中"如何使用表格布局"的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!

  • 相关阅读:
    java的实体类注解校验
    重装系统后电脑图片显示不出来怎么办
    ORB-LSAM2:ComputeKeyPointsOctTree()提取特征:maxY = iniY + hCell + 6 为怎么是+6而不是+3?
    【从0到1设计一个网关】性能优化---缓存
    Windows下搭建GTK3开发环境
    内置属性-top栏切换
    缓存的力量:提升API性能和可扩展性
    如何订购 ELEMENTOR PRO
    C++ 手动实现单向循环链表(课后作业版)
    SpringMVC+Vue实现前后端的农业信息管理系统
  • 原文地址:https://blog.csdn.net/talk_8/article/details/127607494