[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 ...
随机推荐
- Kafka连接SparkStreaming的两种方式
第一种方式代码: import org.apache.spark.storage.StorageLevel import org.apache.spark.{HashPartitioner, Spar ...
- (转)SSL/TLS 漏洞“受戒礼”,RC4算法关闭
原文:https://blog.csdn.net/Nedved_L/article/details/81110603 SSL/TLS 漏洞“受戒礼” 一.漏洞分析事件起因2015年3月26日,国外数据 ...
- [转]网页实时聊天之js和jQuery实现ajax长轮询 PHP
网页实时聊天之js和jQuery实现ajax长轮询 众所周知,HTTP协议是无状态的,所以一次的请求都是一个单独的事件,和前后都没有联系.所以我们在解决网页实时聊天时就遇到一个问题,如何保证与服务器的 ...
- Selenium自动化测试Python三:WebDriver进阶
WebDriver 进阶 欢迎阅读WebDriver进阶讲义.本篇讲义将会重点介绍Selenium WebDriver API的重点使用方法,以及使用模块化和参数化进行自动化测试的设计. WebDri ...
- windows cmd窗口提示“telnet”命令不能内部或外部命令,也不是可运行的程序
windows cmd窗口提示“telnet”命令不能内部或外部命令,也不是可运行的程序 原因:C:\Windows\System32目录下没有telnet.exe,path系统变量的值包含了C:\W ...
- 在Android中调用KSOAP2库访问webservice服务出现的服务端返回AnyType{}
最近在做毕业设计的时候,涉及到了安卓端访问web service服务端数据库,并返回一个值,当我把web service测试通过后,想写一个简单的安卓测试程序,来实现服务端数据库访问,通过web se ...
- Android开发之漫漫长途 Ⅶ——Android消息机制(Looper Handler MessageQueue Message)
该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...
- 什么是编程语言,什么是Python解释器
转自白月黑羽python在线教程:http://www.python3.vip/doc/blog/python/2018071401/ 0基础学Python之1:什么是编程语言,什么是Python解释 ...
- mysql添加用户、修改权限,修改登录权限ip
1.添加用户 1.1 登录MYSQL: @>mysql -u root -p @>密码 1.2 创建用户: 格式:grant select on 数据库.* to 用户名@登录主机 ide ...
- Spring技术内幕_IOC容器载入Bean定义资源文件
转自:http://blog.csdn.net/chjttony/article/details/6259723 1.当spring的IoC容器将Bean定义的资源文件封装为Spring的Resour ...