[Android] TableLayout
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的更多相关文章
- Android——TableLayout
TableLayout的行数由开发人员直接指定,即有多少个TableRow对象(或View控件),就有多少行. TableLayout的列数等于含有最多子控件的TableRow的列数.如第一Table ...
- Android TableLayout 常用的属性介绍及演示
TableLayout经常用的属性是: 1.android:collapseColumns:以第0行为序,隐藏指定的列:把android:collapseColumns=0,2 意思是把第0和第2列隐 ...
- android TableLayOut画表格
<TableRow android:layout_width="match_parent" android:layout_height="wrap_content& ...
- Android TableLayout中的使用说明
TableLayout特点: 1)TableLayout和我们平时在网页上见到的Table有所不同,TableLayout没有边框的 2)它是由多个TableRow对象组成,每个TableRow可以有 ...
- android:TableLayout表格布局详解
http://blog.csdn.net/justoneroad/article/details/6835915 这篇博文包括的内容:1.TableLayout简介2.TableLayout行列数的确 ...
- Android TableLayout 表格布局
TableLayout继承LinearLayout 有多少个TableRow对象就有多少行, 列数等于最多子控件的TableRow的列数 直接在TableLayout加控件,控件会占据一行 Table ...
- android tablelayout 显示图片
当在tablelayout中显示图片时,设置imageView为固定大小时,会出现divide by zero 错误 将LayoutParams 改为 TableRow.LayoutParams即可 ...
- android捕获ListView中每个item点击事件
转自:http://www.cnblogs.com/pswzone/archive/2012/03/10/2389275.html package com.wps.android; import ...
- Android的学习第六章(布局一TableLayout)
今天我们来简单的说一下Android不居中的TableLayout布局(表格布局) 表格布局的意思就是将我们的布局看做为一个表格,主要用于对控件进行整齐排列 我们看一个简单的案例 <TableL ...
随机推荐
- ssh-key的复制
执行ssh-keygen 生产钥 在b主机root目录创建.ssh文件夹 在a主机输入ssh-copy-id root@*.*.*.* 就把公钥复制过去了 命令:scp 不同的Linux之间copy文 ...
- .Net 站点跨域问题及解决方法
一.什么是站点跨域 了解跨域之前, 先了解下什么同源策略?百度百科:同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功 ...
- 【原创】基于Bootstrap的Modal二次封装
前言 Bootstrap:Twitter推出的一个开源的用于前端开发的工具包.它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架 官方网站: ...
- wordpress获取文章所属分类
1.获取全部分类 <?php foreach((get_the_category()) as $category){ echo $category->cat_name; } ?> 2 ...
- 详解C#泛型(二)
一.自定义泛型方法(Generic Method),将类型参数用作参数列表或返回值的类型: void MyFunc<T>() //声明具有一个类型参数的泛型方法 { Type generi ...
- Disrunptor多生产者多消费者模型讲解
多生产者多消费者模拟需求:1.创建100个订单生产者,每个生产者生产100条订单,总共会生产10000条订单,由3个消费者进行订单消费处理.2.100个订单生产者全部创建完毕,再一起生产消费订单数据 ...
- Linux-(lsof,ifconfig,route)
lsof命令 1.命令格式: lsof [参数][文件] 2.命令功能: lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通 ...
- Eclipse 下Spring cloud项目集成开发插件Spring Tool Suite (STS) 安装
安装eclipse插件 Help->Eclipse Marketplace-> Search中查找"Spring Tool Suite (STS) for Eclipse&quo ...
- 行为型设计模式之模板方法(TEMPLATE METHOD)模式 ,策略(Strategy )模式
1 模板方法(TEMPLATE METHOD)模式: 模板方法模式把我们不知道具体实现的步聚封装成抽象方法,提供一些按正确顺序调用它们的具体方法(这些具体方法统称为模板方法),这样构成一个抽象基类.子 ...
- PPT定时器小记
在日常会议汇报中,往往会出现超时的情况.此时需要一种优雅提醒讲演者加快速度的方式.PPT定时器就是其中的一种方法. ppttimer,一款在GitHub上发布的开源软件,基本能满足我在本项工作中的需求 ...