我们知道在Web开发中,表格一般在页面元素中是少不了的,采用表格的形式可以提供给用户一份清晰
的数据展现。在Android我们就可以用TableLayout来实现类似于HTML中的表格效果。在表格布局中每一
行用一个TableRow对象表示(或者View对象也可)。TableRow中可以添加控件,控件的个数代表了表格的
列数。
通过查看API文档,TableLayout是继承至LinearLayout的,同样TableRow也是继承LinearLayout的
不过具体如何使用呢?先看一段例子程序:
xml文件代码:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context=".MainActivity"
android:orientation="vertical">
<TableRow
android:layout_marginLeft="45dip">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用户名:"/>
<EditText
android:id="@+id/username_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minWidth="100dip"
/>
</TableRow>
<TableRow
android:layout_marginLeft="45dip">
<TextView
android:text="密 码:"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<EditText
android:id="@+id/password_text"
android:layout_width="fill_parent"
android:minWidth="100dip"
android:layout_height="wrap_content"
/>
</TableRow>
<!-- 添加一个分隔符 -->
<View
android:layout_height="2dp"
android:layout_width="fill_parent"
android:background="#31AAD6"/>
<TableRow
android:layout_marginLeft="45dip">
<Button
android:text="清空"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="40dip"/>
<Button
android:text="提交"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dip"/>
</TableRow>
<TableRow
android:layout_marginLeft="45dip">
<Button
android:layout_column="1"
android:id="@+id/next"
android:text="Next"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</TableRow>
</TableLayout>
再附上效果图:
上面只是运用TableLayout布局做的一个简单的登录的样式,不过如何使用表格的是形式来显示数据呢?而且是否可以像Html
表格中的那样“合并单元格”呢,其实这些都可以做到!不过需要设置相关的属性。
通过查阅API:
TableLayout具有的重要属性:
android:shrinkColumns:该属性用来指明需要折行显示的列(实际中很有用!)下标从0开始的,多列用“,”隔开。
android:collapseColumns:该属性设置需要隐藏的列,下标同样是从0开始的,如有多列用“,”隔开。
android:stretchColumns:设置指定的列可伸展,该列会尽量填满可用空间,多列用“,”隔开
TableRow具有的重要属性:
android:layout_column:控件在表格中所处的列,下标从0开始。
android:layout_span:控件跨越的列数。
Tips:上面两个属性在Eclipse是没有提示的需要自己手写
以下是例子程序:
xml文件代码:
<?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:orientation="vertical"
android:shrinkColumns="3"
android:stretchColumns="3" >
<!-- 地址栏的内容过多应该要折行显示 -->
<TableRow
android:layout_width="fill_parent"
android:layout_marginLeft="15dip"
android:layout_marginRight="15dip" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:padding="10dip"
android:text="学号" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:padding="10dip"
android:text="姓名" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:padding="10dip"
android:text="性别" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:padding="10dip"
android:text="地址" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_marginLeft="15dip"
android:layout_marginRight="15dip" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:padding="10dip"
android:text="001" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:padding="10dip"
android:text="张三" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:padding="10dip"
android:text="男" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:padding="10dip"
android:text="重庆市北碚区天生路2" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_marginLeft="15dip"
android:layout_marginRight="15dip" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:padding="10dip"
android:text="002" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:padding="10dip"
android:text="李四" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:padding="10dip"
android:text="男" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_marginLeft="15dip"
android:layout_marginRight="15dip" >
<!-- 处于第二列 -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="1"
android:gravity="center_horizontal"
android:padding="10dip"
android:text="张三" />
<!-- 跳两列,即第四列 -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_span="2"
android:gravity="center_horizontal"
android:padding="10dip"
android:text="重庆市北碚区天生路2" />
</TableRow>
</TableLayout>
附上效果图:
项目源代码:
http://download.csdn.net/detail/kiritor/5119516