美文网首页
Android控件<第十三篇>:TableLayout-表格布局

Android控件<第十三篇>:TableLayout-表格布局

作者: NoBugException | 来源:发表于2021-09-07 21:39 被阅读0次

表格布局让我想到了GridLayout(网格布局),TableLayout为表格布局,也是本章的重点所在。

TableLayout是线性布局LinearLayout的子类,属于线性布局的一个扩展,也就是说TableLayout本质上就是一个线性布局。

一般代码如下:

<TableLayout
    android:id="@+id/tableLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:stretchColumns="0,1">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="我是表格布局的第一行"
        android:textSize="20sp"
        android:padding="20dp"
        android:layout_gravity="center"/>


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textSize="20sp"
        android:padding="20dp"
        android:text="我是表格布局的第二行"
        android:layout_gravity="center"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textSize="20sp"
        android:padding="20dp"
        android:text="我是表格布局的第三行"
        android:layout_gravity="center"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textSize="20sp"
        android:padding="20dp"
        android:text="我是表格布局的第四行"
        android:layout_gravity="center"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textSize="20sp"
        android:padding="20dp"
        android:text="我是表格布局的第五行"
        android:layout_gravity="center"/>

</TableLayout>

在TableLayout中添加几个TextView,效果如下:

图片.png

默认情况下,一个组件代表一行,也就是说,我们可以把TableLayout的行写成横向的LinearLayout,并在LinearLayout中添加几个组件,那么这样看起来表格布局中每行都几个组件了。这里我想说的是,表格布局中的TableRow可以代码一行,在TableRow下可以拥有若干组件,TableRow也是LinearLayout的子类,那么问题来了,既然TableLayoutTableRow本质上都是LinearLayout,那么为什么不使用LinearLayoutLinearLayout组合完成表格布局呢?原因是TableRowTableLayout 都有他们独特的性质。

其中TableLayout有以下几种属性可设置:

  • stretchColumns--拉伸列

当行组件比较少时,如果都没有到达屏幕右侧,如图:

图片.png

那么,可以采用拉伸某列达到全屏的效果:

    android:stretchColumns="1,3"

添加以上配置,让第1列和第三列拉伸,以保证全屏(当其中某一行达到屏幕的由边缘,则表示该表格全屏了),如图:

图片.png

如图,第1列和第3列明显已被拉伸。

注意,stretchColumns只有在所有行都没有沾满横向屏幕时才会生效,如果有一行已经正好或者超过屏幕的宽度,那么该属性无效。

  • shrinkColumns--收缩列

当行组件比较多时,往往会超过屏幕

图片.png

TableLayout中添加

    android:shrinkColumns="0,2"

之后,可以自动收缩第0列和第2列,shrinkColumns可以有多个取值,多个取值之间用逗号隔开。

图片.png

如图,第0列和第2列明显已被收缩。

注意:shrinkColumns只有在行超过屏幕时生效,第0列和第2列收缩的幅度是一样的。

  • collapseColumns-隐藏列

假设原图是这样的:

图片.png

现在隐藏第0列,第1列,第4列:

    android:collapseColumns="0,1,4"

效果如下:

图片.png

如题所示,列已被隐藏。

最后,GridLayoutRecyclerView都可以达到类似的效果,如果有相应的需求,那么根据情况选择使用哪种。

[本章完...]

相关文章

  • Android控件<第十三篇>:TableLayout-表格布局

    表格布局让我想到了GridLayout(网格布局),TableLayout为表格布局,也是本章的重点所在。 Tab...

  • TableLayout-表格布局

    表格布局让我想到了GridLayout(网格布局),TableLayout为表格布局,也是本章的重点所在。 Tab...

  • UI

    1、布局线性布局 相对布局 框架布局 表格布局 2、控件 设置控件的可见性,使用的是setVisibility()...

  • SeekBar

    Android-SeekBar进度条的使用Android控件与布局——基础控件SeekBar

  • 2.2.4 表格布局

    表格布局的概念 表格布局(TableLayout)是以表格形式排列控件的,通过行和列将界面划分为多个单元格,每个单...

  • 基础布局

    Android中的布局 线性布局:LinerLayout 表格布局:TableLayout 相对布局:Relati...

  • 【Android】零基础编写android项目之布局篇

    前面我们对android有了基础的认识,接下来就针对布局和图片表格控件GridView做一下介绍。 Layout五...

  • Android 六大基本布局

    1.android 六大基本布局: 线性布局LinearLayou、相对布局RelativeLayout、表格布局...

  • Android学习日记

    Day 11 Title 1:UI布局之帧布局、表格布局 android:layout_gravity=""//当...

  • TableLayout表格布局

    TableLayout(表格布局) 表格布局模型以行列的形式管理子控件,每一行为一个TableRow的对象,当然也...

网友评论

      本文标题:Android控件<第十三篇>:TableLayout-表格布局

      本文链接:https://www.haomeiwen.com/subject/trapwltx.html