[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 ...
随机推荐
- Java NIO 基础知识
前言 前言部分是科普,读者可自行选择是否阅读这部分内容. 为什么我们需要关心 NIO?我想很多业务猿都会有这个疑问. 我在工作的前两年对这个问题也很不解,因为那个时候我认为自己已经非常熟悉 IO 操作 ...
- Ubuntu下安装qq方法及疑难问题解决
在Ubuntu下安装qq有两种方法:.tar.gz包安装和.deb包安装下载地址:http://im.qq.com/qq/linux/download.shtml 方法一:.tar.gz包安装法 .t ...
- 面试题-----按位翻转32位unsigned
// test.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #include < ...
- flex弹性布局学习总结
本文首次发布在我的个人博客:Claiyre的个人博客 https://claiyre.github.io/ 博客园地址:http://www.cnblogs.com/nuannuan7362/如需转载 ...
- Quart2D setNeedsDisplay
#import "myview.h" @interface myview () @property(nonatomic,assign) float imageY; @end @im ...
- 【angular5项目积累总结】结合adal4实现http拦截器(token)
import { Injectable } from '@angular/core'; import { HttpEvent, HttpInterceptor, HttpHandler, HttpRe ...
- 浅析Java源码之HttpServlet
纯粹是闲的,在慕课网看了几集的Servlet入门,刚写了1个小demo,就想看看源码,好在也不难 主要是介绍一下里面的主要方法,真的没什么内容啊~ 源码来源于apache-tomcat-7.0.52, ...
- C#基础知识回顾--委托事件
在上一篇看到他我一下子就悟了(续)---委托,被人狂喷.说写的太空,没有什么内容之类的.所以准备在这里重写下,不过还是按着以前的方式尽量简单的写.这里我们以打篮球为例. 第一步:首先,其他对象订购事件 ...
- Bower前端模块管理器
cnpm install bower -g 安装bower bower install jquery //bower会自动去网上找到最新版本的jquery bower uninstall jquery ...
- MyCAT入门实践
1.MyCAT简单介绍 MyCAT是一个彻底开源的,面向企业应用开发的大数据库集群,支持事务.ACID.可以替代MySQL的加强版数据库,是一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Or ...