public class TableLayout extends LinearLayout

查过文档,整理下要点:

  • 一个 TableLayout 包含一些 TableRow 对象,每个对象代表一行。除此之外也可以包含其他对象,比如直接放入 <TextView> 。
  • TableLayout 容器不会为子元素显示边框线。
  • 每一行包含 0 个或多个单元,每个单元可以放一个 View 对象。
  • 一个 Table 的单元可以为空
  • 单元可以像 HTML 一样占据多列 <span>
  • 一个列的宽度由这一列中拥有最宽的单元的某一行宽度决定(想想也是)
  • TableLayout 可以用 setColumnShrinkable() 或者 setColumnStretchable() 指定确定的列的收缩性或者扩展性
  • 一旦设定可收缩,列的宽度可以被收缩至适应其 parent 对象。
  • 一旦设定可拉伸,其可拓展宽度以适应任何多余的空间,但不会超过这个空间
  • 表 Table 的总宽度由它自己 parent 的容器决定
  • 任一列是可以同时具备可收缩性和可拉伸性的。在这种情况下,列总会改变其尺寸,占满所有的可用空间,且用不会超过这个范围。
  • 最后,可以用 setColumnCollapsed() 隐藏一列

  我们无法为 TableLayout 的 children 指定 layout_width 属性。宽度永远是 MATCH_PARENT。但 layout_height 属性可以由 child 定义平;默认值是 WRAP_CONTENT。如果一个 child 是 TableRow,则高度总是 WRAP_CONTENT。

  表的单元必须按照增加列的排序填至行中,在代码和XML文件都要这样。列的索引是从0开始的。如果你不为 child 单元指定列序号,其会自动向下一个有效列增加。如果你跳过某列的索引,这一列会被视为这一行的空单元。

  虽然 TableLayout 典型的 children 是 TableRow,但你也可用任何 View 的子类来作为其直接的 child(第一点)。这个 View 会作为一个占据所有列的单行显示。

看了 APIDemos 的一些例子,感觉比较全面了,这个布局比较简单,也不是很常用,主要是一些规则要熟悉熟悉,下面就直接从 ApiDemos 选一些典型的例子,基本够用了。

本文地址:http://www.cnblogs.com/rossoneri/p/4369333.html

资源文件:

 <string name="table_layout_1_star">*</string>
<string name="table_layout_1_triple_star">***</string>
<string name="table_layout_1_open">Open\u2026</string>
<string name="table_layout_1_open_shortcut">Ctrl-O</string>
<string name="table_layout_1_save">Save As\u2026</string>
<string name="table_layout_1_save_shortcut">(Save Document)</string>
<string name="table_layout_1_quit">Quit Application</string>
<string name="table_layout_1_quit_shortcut">Ctrl-Shift-Q</string>
<string name="table_layout_2_path_1">~/path/to/file/to/open</string>
<string name="table_layout_2_path_2">~/.profile</string>
<string name="table_layout_2_open">Open</string>
<string name="table_layout_2_save">Save</string>
<string name="table_layout_2_save_all">Save All</string>
<string name="table_layout_3_star">*</string>
<string name="table_layout_3_triple_star">***</string>
<string name="table_layout_3_open">Open\u2026</string>
<string name="table_layout_3_open_shortcut">Ctrl-O</string>
<string name="table_layout_3_save">Save As\u2026</string>
<string name="table_layout_3_save_shortcut">(Save Document)</string>
<string name="table_layout_3_too_long">Too Long</string>
<string name="table_layout_3_quit">Quit Application</string>
<string name="table_layout_3_quit_shortcut">Ctrl-Shift-Q</string>
<string name="table_layout_4_open">Open\u2026</string>
<string name="table_layout_4_open_shortcut">Ctrl-O</string>
<string name="table_layout_4_save">Save As\u2026</string>
<string name="table_layout_4_save_shortcut">Ctrl-Shift-S</string>
<string name="table_layout_5_open">Open\u2026</string>
<string name="table_layout_5_open_shortcut">Ctrl-O</string>
<string name="table_layout_5_save">Save\u2026</string>
<string name="table_layout_5_save_shortcut">Ctrl-S</string>
<string name="table_layout_5_save_as">Save As\u2026</string>
<string name="table_layout_5_save_as_shortcut">Ctrl-Shift-S</string>
<string name="table_layout_5_import">Import\u2026</string>
<string name="table_layout_5_export">Export\u2026</string>
<string name="table_layout_5_export_shortcut">Ctrl-E</string>
<string name="table_layout_5_quit">Quit\u2026</string>
<string name="table_layout_6_x">X</string>
<string name="table_layout_6_open">Open\u2026</string>
<string name="table_layout_6_open_shortcut">Ctrl-O</string>
<string name="table_layout_6_save">Save\u2026</string>
<string name="table_layout_6_save_shortcut">Ctrl-S</string>
<string name="table_layout_6_save_as">Save As\u2026</string>
<string name="table_layout_6_save_as_shortcut">Ctrl-Shift-S</string>
<string name="table_layout_6_import">Import\u2026</string>
<string name="table_layout_6_export">Export\u2026</string>
<string name="table_layout_6_export_shortcut">Ctrl-E</string>
<string name="table_layout_6_quit">Quit\u2026</string>
<string name="table_layout_7_x">X</string>
<string name="table_layout_7_open">Open\u2026</string>
<string name="table_layout_7_open_shortcut">Ctrl-O</string>
<string name="table_layout_7_save">Save\u2026</string>
<string name="table_layout_7_save_shortcut">Ctrl-S</string>
<string name="table_layout_7_save_as">Save As\u2026</string>
<string name="table_layout_7_save_as_shortcut">Ctrl-Shift-S</string>
<string name="table_layout_7_import">Import\u2026</string>
<string name="table_layout_7_export">Export\u2026</string>
<string name="table_layout_7_export_shortcut">Ctrl-E</string>
<string name="table_layout_7_toggle_checkmarks">Toggle Checkmarks</string>
<string name="table_layout_7_toggle_shortcuts">Toggle Shortcuts</string>
<string name="table_layout_8_x">X</string>
<string name="table_layout_8_open">Open\u2026</string>
<string name="table_layout_8_open_shortcut">Ctrl-O</string>
<string name="table_layout_8_save">Save\u2026</string>
<string name="table_layout_8_save_shortcut">Ctrl-S</string>
<string name="table_layout_8_save_as">Save As\u2026</string>
<string name="table_layout_8_save_as_shortcut">Ctrl-Shift-S</string>
<string name="table_layout_8_import">Import\u2026</string>
<string name="table_layout_8_export">Export\u2026</string>
<string name="table_layout_8_export_shortcut">Ctrl-E</string>
<string name="table_layout_8_toggle_stretch">Toggle Stretch</string>
<string name="table_layout_9_open">Open\u2026</string>
<string name="table_layout_9_open_shortcut">Ctrl-O</string>
<string name="table_layout_9_save">Save\u2026</string>
<string name="table_layout_9_save_shortcut">Ctrl-S</string>
<string name="table_layout_9_save_as">Save As\u2026</string>
<string name="table_layout_9_save_as_shortcut">Ctrl-Shift-S</string>
<string name="table_layout_9_save_all">Save All And Do A Lot Of Stuff Just To Be Too Long For This Screen Because It Is A Test After All</string>
<string name="table_layout_9_save_all_shortcut">Ctrl-E</string>
<string name="table_layout_9_import">Import\u2026</string>
<string name="table_layout_9_export">Export\u2026</string>
<string name="table_layout_9_export_shortcut">Ctrl-E</string>
<string name="table_layout_9_toggle_shrink">Toggle Shrink</string>
<string name="table_layout_10_user">User</string>
<string name="table_layout_10_password">Password</string>
<string name="table_layout_10_cancel">Cancel</string>
<string name="table_layout_10_login">Login</string>
<string name="table_layout_12_a">A</string>
<string name="table_layout_12_b">BB</string>
<string name="table_layout_12_c">CCCC</string>
<string name="table_layout_12_d">D</string>
<string name="table_layout_12_e">E</string>
<string name="table_layout_12_f">F</string>
<string name="table_layout_12_g">G</string>
<string name="table_layout_12_h">H</string>

strings.xml

1.基本用法:

 <?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"> <TableRow>
<TextView
android:text="@string/table_layout_1_star"
android:padding="3dip" />
<TextView
android:text="@string/table_layout_1_open"
android:padding="3dip" />
<TextView
android:text="@string/table_layout_1_open_shortcut"
android:padding="3dip" />
</TableRow> <TableRow>
<TextView
android:text="@string/table_layout_1_triple_star"
android:padding="3dip" />
<TextView
android:text="@string/table_layout_1_save"
android:padding="3dip" />
<TextView
android:text="@string/table_layout_1_save_shortcut"
android:padding="3dip" />
</TableRow> <TableRow>
<TextView
android:text="@string/table_layout_1_star"
android:padding="3dip" />
<TextView
android:text="@string/table_layout_1_quit"
android:padding="3dip" />
<TextView
android:text="@string/table_layout_1_quit_shortcut"
android:padding="3dip" />
</TableRow>
</TableLayout>

效果:

2.有空单元的情况:

 <TableLayout
android:layout_width="match_parent"
android:layout_height="match_parent"> <TableRow>
<Button
android:text="@string/table_layout_2_open" />
<TextView
android:text="@string/table_layout_2_path_1"
android:padding="3dip" />
</TableRow>
<TableRow>
<Button
android:text="@string/table_layout_2_save_all"/>
</TableRow>
<TableRow>
<Button
android:text="@string/table_layout_2_save"
android:visibility="invisible" />
<TextView
android:text="@string/table_layout_2_path_2"
android:padding="3dip" />
</TableRow>
</TableLayout>

效果

3.加上对齐属性: stretchColumn="1" 拉伸第一列

 <?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:stretchColumns="1"> <TableRow>
<TextView
android:text="@string/table_layout_4_open"
android:padding="3dip" />
<TextView
android:text="@string/table_layout_4_open_shortcut"
android:gravity="right"
android:padding="3dip" />
</TableRow> <TableRow>
<TextView
android:text="@string/table_layout_4_save"
android:padding="3dip" />
<TextView
android:text="@string/table_layout_4_save_shortcut"
android:gravity="right"
android:padding="3dip" />
</TableRow>
</TableLayout>

效果:

把stretchColumns="1"改为 stretchColumns="0,1",两列都拉伸

效果:

4.span

 <TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"> <TableRow>
<TextView
android:text="@string/table_layout_12_a"
android:background="#FFFF0000"
android:padding="3dip" />
<TextView
android:text="@string/table_layout_12_b"
android:background="#FF00FF00"
android:padding="3dip" />
<TextView
android:text="@string/table_layout_12_c"
android:background="#FF0000FF"
android:padding="3dip" />
</TableRow> <TableRow>
<TextView
android:text="@string/table_layout_12_d"
android:layout_span="2"
android:gravity="center_horizontal"
android:background="#FF0000FF"
android:padding="3dip" />
<TextView
android:text="@string/table_layout_12_e"
android:background="#FF00FF00"
android:padding="3dip" />
</TableRow> <TableRow>
<TextView
android:text="@string/table_layout_12_f"
android:background="#FFFF00FF"
android:padding="3dip" />
<TextView
android:text="@string/table_layout_12_g"
android:background="#FF00FF00"
android:padding="3dip" />
<TextView
android:text="@string/table_layout_12_h"
android:background="#FFFF0000"
android:padding="3dip" />
</TableRow> <TableRow>
<TextView
android:text="@string/table_layout_12_a"
android:background="#FF00FF00"
android:padding="3dip" />
<TextView
android:text="@string/table_layout_12_b"
android:layout_span="2"
android:gravity="center_horizontal"
android:background="#FF0000FF"
android:padding="3dip" />
</TableRow> <TableRow>
<TextView
android:text="@string/table_layout_12_g"
android:layout_span="3"
android:gravity="center_horizontal"
android:background="#FFC0C0C0"
android:padding="3dip" />
</TableRow>
</TableLayout>

效果:

5.复杂布局,garvity 和 layout_gravity 对齐,前者是其 child 的位置,后者是其自身的位置:

 <TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:stretchColumns="1"> <TableRow>
<TextView
android:layout_column="1"
android:text="@string/table_layout_7_open"
android:padding="3dip" />
<TextView
android:text="@string/table_layout_7_open_shortcut"
android:gravity="right"
android:padding="3dip" />
</TableRow> <TableRow>
<TextView
android:layout_column="1"
android:text="@string/table_layout_7_save"
android:background="#FF00FF00"
android:padding="3dip" />
<TextView
android:text="@string/table_layout_7_save_shortcut"
android:gravity="right"
android:padding="3dip" />
</TableRow> <TableRow>
<!-- Horizontally centers the content of the cell -->
<TextView
android:layout_column="1"
android:text="@string/table_layout_7_save_as"
android:background="#FFFF0000"
android:layout_gravity="center_horizontal"
android:padding="3dip" />
<TextView
android:text="@string/table_layout_7_save_as_shortcut"
android:background="#FFFF00FF"
android:gravity="right"
android:padding="3dip" />
</TableRow> <View
android:layout_height="2dip"
android:background="#FF909090" /> <TableRow>
<TextView
android:text="@string/table_layout_7_x"
android:padding="3dip" />
<TextView
android:text="@string/table_layout_7_import"
android:padding="3dip" />
</TableRow> <TableRow>
<View
android:layout_height="68dip"
android:background="#FF909090" />
<!-- Aligns the content of the cell to the bottom right -->
<TextView
android:text="@string/table_layout_7_export"
android:background="#FFFF0000"
android:layout_gravity="right|bottom"
android:padding="3dip" />
<TextView
android:text="@string/table_layout_7_export_shortcut"
android:background="#FF00FFFF"
android:gravity="right"
android:padding="3dip" />
</TableRow> <View
android:layout_height="2dip"
android:background="#FF909090" />
</TableLayout>

效果

[Android] TableLayout的更多相关文章

  1. Android——TableLayout

    TableLayout的行数由开发人员直接指定,即有多少个TableRow对象(或View控件),就有多少行. TableLayout的列数等于含有最多子控件的TableRow的列数.如第一Table ...

  2. Android TableLayout 常用的属性介绍及演示

    TableLayout经常用的属性是: 1.android:collapseColumns:以第0行为序,隐藏指定的列:把android:collapseColumns=0,2 意思是把第0和第2列隐 ...

  3. android TableLayOut画表格

    <TableRow android:layout_width="match_parent" android:layout_height="wrap_content& ...

  4. Android TableLayout中的使用说明

    TableLayout特点: 1)TableLayout和我们平时在网页上见到的Table有所不同,TableLayout没有边框的 2)它是由多个TableRow对象组成,每个TableRow可以有 ...

  5. android:TableLayout表格布局详解

    http://blog.csdn.net/justoneroad/article/details/6835915 这篇博文包括的内容:1.TableLayout简介2.TableLayout行列数的确 ...

  6. Android TableLayout 表格布局

    TableLayout继承LinearLayout 有多少个TableRow对象就有多少行, 列数等于最多子控件的TableRow的列数 直接在TableLayout加控件,控件会占据一行 Table ...

  7. android tablelayout 显示图片

    当在tablelayout中显示图片时,设置imageView为固定大小时,会出现divide by zero 错误 将LayoutParams 改为 TableRow.LayoutParams即可 ...

  8. android捕获ListView中每个item点击事件

    转自:http://www.cnblogs.com/pswzone/archive/2012/03/10/2389275.html package com.wps.android;   import  ...

  9. Android的学习第六章(布局一TableLayout)

    今天我们来简单的说一下Android不居中的TableLayout布局(表格布局) 表格布局的意思就是将我们的布局看做为一个表格,主要用于对控件进行整齐排列 我们看一个简单的案例 <TableL ...

随机推荐

  1. ssh-key的复制

    执行ssh-keygen 生产钥 在b主机root目录创建.ssh文件夹 在a主机输入ssh-copy-id root@*.*.*.* 就把公钥复制过去了 命令:scp 不同的Linux之间copy文 ...

  2. .Net 站点跨域问题及解决方法

    一.什么是站点跨域 了解跨域之前, 先了解下什么同源策略?百度百科:同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功 ...

  3. 【原创】基于Bootstrap的Modal二次封装

    前言 Bootstrap:Twitter推出的一个开源的用于前端开发的工具包.它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架 官方网站: ...

  4. wordpress获取文章所属分类

    1.获取全部分类 <?php foreach((get_the_category()) as $category){ echo $category->cat_name; } ?> 2 ...

  5. 详解C#泛型(二)

    一.自定义泛型方法(Generic Method),将类型参数用作参数列表或返回值的类型: void MyFunc<T>() //声明具有一个类型参数的泛型方法 { Type generi ...

  6. Disrunptor多生产者多消费者模型讲解

    多生产者多消费者模拟需求:1.创建100个订单生产者,每个生产者生产100条订单,总共会生产10000条订单,由3个消费者进行订单消费处理.2.100个订单生产者全部创建完毕,再一起生产消费订单数据 ...

  7. Linux-(lsof,ifconfig,route)

    lsof命令 1.命令格式: lsof [参数][文件] 2.命令功能: lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通 ...

  8. Eclipse 下Spring cloud项目集成开发插件Spring Tool Suite (STS) 安装

    安装eclipse插件 Help->Eclipse Marketplace-> Search中查找"Spring Tool Suite (STS) for Eclipse&quo ...

  9. 行为型设计模式之模板方法(TEMPLATE METHOD)模式 ,策略(Strategy )模式

    1 模板方法(TEMPLATE METHOD)模式: 模板方法模式把我们不知道具体实现的步聚封装成抽象方法,提供一些按正确顺序调用它们的具体方法(这些具体方法统称为模板方法),这样构成一个抽象基类.子 ...

  10. PPT定时器小记

    在日常会议汇报中,往往会出现超时的情况.此时需要一种优雅提醒讲演者加快速度的方式.PPT定时器就是其中的一种方法. ppttimer,一款在GitHub上发布的开源软件,基本能满足我在本项工作中的需求 ...