[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 ...
随机推荐
- rpm安装JDK方法
由于版权原因,Linux发行版并没有包含官方版的Oracle JDK,必须自己从官网上下载安装.Oracle官网用Cookie限制下载方式,使得眼下只能用浏览器进行下载,使用其他方式可能会导致下载失败 ...
- JVM中强引用,弱引用,软引用和幽灵引用的代码
上代码: public class ReferenceTest { public static void main(String[] args) { //test1();//软引用 //test2() ...
- Storm的acker确认机制
Storm的acker消息确认机制... ack/fail消息确认机制(确保一个tuple被完全处理) 在spout中发射tuple的时候需要同时发送messageid,这样才相当于开启了消息确认机制 ...
- Nginx单向认证的安装配置
Nginx单向认证的安装配置 首先系统要已经安装了openssl,以下是使用openssl安装配置单向认证的执行步骤与脚本: #------------------------------------ ...
- redmine设置user projects时无法delete的处理方法
对于user,当要在管理员界面处理其projects权限时,发现部分项目只有edit按钮,而部分项目还有一个delete按钮. “delete”,直接点击按钮即可删除对应project权限,表明该pr ...
- Shell的并发
#!/bin/bash ./step1.sh & >中文 i=$! ./step2.sh & >西王 j=$! wait #echo ${i} #echo ${j} ech ...
- Google Chrome Native Messaging开发实录(二)Chrome Extension扩展
接上一篇<Google Chrome Native Messaging开发实录(一)背景介绍>的项目背景,话不多说,有关Chrome Extension介绍和文档就不展开了,直接上代码. ...
- 【详解】JNI (Java Native Interface) (四)
案例四:回调实例方法与静态方法 描述:此案例将通过Java调用的C语言代码回调Java方法. 要想调用实例对象的方法,需要进行以下步骤: 1. 通过对象实例,获取到对象类的引用 => GetO ...
- AJAX unsupported media type 415错误处理
一.问题 在使用angular做请求拦截时,因为依赖循环的问题,在请求拦截中改为使用ajax来发起请求拿到我想要的数据,结果出现了415 Unsupported Media Type错误,由于很久没使 ...
- 基于Hadoop2.6.5(HA)的HBase2.0.5配置
1.配置 在CentOS7Three上配置,注意:一定要安装bin包,不能安装src包 /usr/local/hbase/hbase-2.0.5/conf 编辑hbase-env.sh,替换成如下配置 ...