- 浏览: 1747974 次
- 性别:
- 来自: 大连
博客专栏
-
Spring数据库访问系列...
浏览量:172812
-
Android学习笔记
浏览量:366534
-
iBatis开发详解
浏览量:188301
-
Objective-C学习...
浏览量:98736
最新评论
-
iLidy:
引用[/c
Hibernate持久化对象的生命周期详解 -
fengzigogo:
您好,有这个项目架构的源码下载地址吗?
一种Java Web应用开发框架的构建(基于Struts2+Spring+FreeMarker)之一 -
spring_springmvc:
可以参考最新的文档:如何在eclipse jee中检出项目并转 ...
用Maven构建Java Web开发环境(Jetty容器)之二 -
springdata_springmvc:
spring mvc demo教程源代码下载,地址:http: ...
Spring 3之MVC & Security简单整合开发(二) -
赵庆辉:
看帖回复是美德,楼主讲的很清晰明了,看了豁然开朗.
Java String对象的经典问题(new String())
接上文
在Web开发中,我们会接触到形形色色的表格,HTML中的<table>元素为我们实现了表格的实现,可以说,表格是我们使用最多的元素。在Android中,我们可以使用TableLayout来实现表格布局。HTML的表格中使用<tr>来表示表格的一行,类似的,在TableLayout中,我们也有对应的TableRow来表示表格的一行。但在Android中就不往下区分表格单元了,也就是没有相应的<td>。
下面首先来看一下TableLayout的文档:
它是LinearLayout线性布局管理器的子类,其继承结构为:
java.lang.Object
↳ android.view.View
↳ android.view.ViewGroup
↳ android.widget.LinearLayout
↳ android.widget.TableLayout
从文档中不难看出,要使用TableLayout就离不开TableRow,那么TableRow的文档如下:
其也是LinearLayout的子类,继承结构如下:
java.lang.Object
↳ android.view.View
↳ android.view.ViewGroup
↳ android.widget.LinearLayout
↳ android.widget.TableRow
在Eclipse中创建一个项目来说明TableLayout,首先使用XML来定义布局管理器:
我们创建了一个表格布局管理器,在其中创建了两行,也就是两个TableRow元素。在第一行中,我们放置了两个组件,一个是文本输入组件,给出默认提示文字。第二个是一个按钮,构成一个搜索框。
第二个TableRow中我们放置了一个提示文本和一个单选按钮,那么创建一个TextView和一个RadioGroup就行了。在RadioGroup中我们设置RadioButton是纵向排列的,然后默认选中一个。
在两个TableRow中间,我们放置了一个<View>元素,可以表示任意的组件,这里我们放置一个水平线,就像HTML中的<hr>元素效果,设置宽度是2dp,颜色为#FDF5E6。
运行这段程序,我们就得到如下的显示效果:
我们在Web开发中使用表格最多的应用就是数据显示了,那么在Android中也会需要用表格来显示数据,下面我们就来看看如何使用TableLayout和TableRow来显示数据,再创建一个布局管理器文件(在layout下创建datadisplay.xml),
那么在R.java中我们就会得到对应的资源:
下面来编写这个布局文件,其内容如下:
这里我们仅仅定义出表格的表头,有4列显示内容,那么layout_column表示的就是该列的编号,可以看出,这个编号是从0开始的,同时这是显示样式的水平居中显示,并且都有10dp的间距。修改Activity程序中的布局管理器文件:
运行程序,此时得到如下显示效果:
那么可以看到,表头我们就做出来了,下面继续设置内容:
我们设置了一条水平横线,下面是两条数据的显示,那么运行程序,我们会看到这样的显示效果:
显示不下不要紧,我们切换到横屏模式下再看:
但是问题仍然存在,因为某一个文本太长了,并且我们设置了水平居中显示的效果,所以后面的内容都显示不下消失了,显然这么显示不合理,需要列可以折行显示内容,设置如下内容:
在TableLayout元素上我们设置一个shrinkColumns属性,就是设置哪一列可以折行显示,这里是第三列需要折行显示,设置完成,显示效果如下:
我们就得到了预期的效果。表格布局中还可以设置隐藏列,那么需要在TableLayout上设置如下属性:
这里我们设置第一列和第四列为不显示状态,那么就得到如下显示效果:
和前面两个布局管理器类似,我们也可以通过程序来控制表格布局管理器。不难想到这里我们需要四个类来完成,分别是TableLayout,TableLayout.LayoutParams,TableRow,TableRow.LayoutParams
下面来看一下TableLayout.LayoutParams的文档:
可以看出TableLayout.LayoutParams继承自LinearLayout.LayoutParams,其继承结构如下:
java.lang.Object
↳ android.view.ViewGroup.LayoutParams
↳ android.view.ViewGroup.MarginLayoutParams
↳ android.widget.LinearLayout.LayoutParams
↳ android.widget.TableLayout.LayoutParams
下面是TableRow.LayoutParams,其实它们都是类似的:
它的继承结构为:
java.lang.Object
↳ android.view.ViewGroup.LayoutParams
↳ android.view.ViewGroup.MarginLayoutParams
↳ android.widget.LinearLayout.LayoutParams
↳ android.widget.TableRow.LayoutParams
下面我将在XML布局管理文件中配置的数据表格用程序来进行编写,那么就需要准备数据,表格数据可以看作是二维表,那么很自然想到,在数据量不大时可以使用而为数组来表示,其代码如下:
对于二维数组的遍历必然是嵌套的循环来进行,运行程序,我们得到如下效果:
可以看到,我们之前设置的显示效果都不存在了,当然这可以通过代码继续设置样式,但该代码已经相当的复杂了,如果继续修改程序,那程序必然显得十分臃肿。所以对复杂布局我们采用XML文件的配置方式来进行是比较好的方法。
示例代码请参考附件
接下文
在Web开发中,我们会接触到形形色色的表格,HTML中的<table>元素为我们实现了表格的实现,可以说,表格是我们使用最多的元素。在Android中,我们可以使用TableLayout来实现表格布局。HTML的表格中使用<tr>来表示表格的一行,类似的,在TableLayout中,我们也有对应的TableRow来表示表格的一行。但在Android中就不往下区分表格单元了,也就是没有相应的<td>。
下面首先来看一下TableLayout的文档:
它是LinearLayout线性布局管理器的子类,其继承结构为:
java.lang.Object
↳ android.view.View
↳ android.view.ViewGroup
↳ android.widget.LinearLayout
↳ android.widget.TableLayout
从文档中不难看出,要使用TableLayout就离不开TableRow,那么TableRow的文档如下:
其也是LinearLayout的子类,继承结构如下:
java.lang.Object
↳ android.view.View
↳ android.view.ViewGroup
↳ android.widget.LinearLayout
↳ android.widget.TableRow
在Eclipse中创建一个项目来说明TableLayout,首先使用XML来定义布局管理器:
<?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TableRow> <EditText android:id="@+id/edit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="请输入内容" /> <Button android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="搜索" /> </TableRow> <View android:id="@+id/hr" android:layout_height="2dp" android:background="#FDF5E6" /> <TableRow> <TextView android:id="@+id/label" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="请选择您的性别" /> <RadioGroup android:id="@+id/gender" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checkedButton="@+id/male" android:orientation="vertical" > <RadioButton android:id="@+id/male" android:text="男" /> <RadioButton android:id="@+id/female" android:text="女" /> </RadioGroup> </TableRow> </TableLayout>
我们创建了一个表格布局管理器,在其中创建了两行,也就是两个TableRow元素。在第一行中,我们放置了两个组件,一个是文本输入组件,给出默认提示文字。第二个是一个按钮,构成一个搜索框。
第二个TableRow中我们放置了一个提示文本和一个单选按钮,那么创建一个TextView和一个RadioGroup就行了。在RadioGroup中我们设置RadioButton是纵向排列的,然后默认选中一个。
在两个TableRow中间,我们放置了一个<View>元素,可以表示任意的组件,这里我们放置一个水平线,就像HTML中的<hr>元素效果,设置宽度是2dp,颜色为#FDF5E6。
运行这段程序,我们就得到如下的显示效果:
我们在Web开发中使用表格最多的应用就是数据显示了,那么在Android中也会需要用表格来显示数据,下面我们就来看看如何使用TableLayout和TableRow来显示数据,再创建一个布局管理器文件(在layout下创建datadisplay.xml),
那么在R.java中我们就会得到对应的资源:
package org.pioneer; public final class R { public static final class attr { } public static final class drawable { public static final int ic_launcher=0x7f020000; } public static final class id { public static final int btn=0x7f050001; public static final int edit=0x7f050000; public static final int female=0x7f050006; public static final int gender=0x7f050004; public static final int hr=0x7f050002; public static final int label=0x7f050003; public static final int male=0x7f050005; } public static final class layout { public static final int datadisplay=0x7f030000; public static final int main=0x7f030001; } public static final class string { public static final int app_name=0x7f040001; public static final int hello=0x7f040000; } }
下面来编写这个布局文件,其内容如下:
<?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:layout_column="0" android:gravity="center_horizontal" android:padding="10dp" android:text="序号" /> <TextView android:layout_column="1" android:gravity="center_horizontal" android:padding="10dp" android:text="姓名" /> <TextView android:layout_column="2" android:gravity="center_horizontal" android:padding="10dp" android:text="城市" /> <TextView android:layout_column="3" android:gravity="center_horizontal" android:padding="10dp" android:text="性别" /> </TableRow> </TableLayout>
这里我们仅仅定义出表格的表头,有4列显示内容,那么layout_column表示的就是该列的编号,可以看出,这个编号是从0开始的,同时这是显示样式的水平居中显示,并且都有10dp的间距。修改Activity程序中的布局管理器文件:
super.setContentView(R.layout.datadisplay);
运行程序,此时得到如下显示效果:
那么可以看到,表头我们就做出来了,下面继续设置内容:
<View android:layout_height="2dp" android:background="#FDF5E6" /> <TableRow> <TextView android:layout_column="0" android:gravity="center_horizontal" android:padding="5dp" android:text="001" /> <TextView android:layout_column="1" android:gravity="center_horizontal" android:padding="10dp" android:text="Sarin" /> <TextView android:layout_column="2" android:gravity="center_horizontal" android:padding="10dp" android:text="辽宁省大连市高新园区七贤岭汇贤园七号腾飞软件园二号楼" /> <TextView android:layout_column="3" android:gravity="center_horizontal" android:padding="10dp" android:text="男" /> </TableRow> <TableRow> <TextView android:layout_column="0" android:gravity="center_horizontal" android:padding="5dp" android:text="002" /> <TextView android:layout_column="1" android:gravity="center_horizontal" android:padding="10dp" android:text="Tom" /> <TextView android:layout_column="2" android:gravity="center_horizontal" android:padding="10dp" android:text="北京市" /> <TextView android:layout_column="3" android:gravity="center_horizontal" android:padding="10dp" android:text="男" /> </TableRow>
我们设置了一条水平横线,下面是两条数据的显示,那么运行程序,我们会看到这样的显示效果:
显示不下不要紧,我们切换到横屏模式下再看:
但是问题仍然存在,因为某一个文本太长了,并且我们设置了水平居中显示的效果,所以后面的内容都显示不下消失了,显然这么显示不合理,需要列可以折行显示内容,设置如下内容:
下内容: <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:shrinkColumns="2">
在TableLayout元素上我们设置一个shrinkColumns属性,就是设置哪一列可以折行显示,这里是第三列需要折行显示,设置完成,显示效果如下:
我们就得到了预期的效果。表格布局中还可以设置隐藏列,那么需要在TableLayout上设置如下属性:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:shrinkColumns="2" android:collapseColumns="0,3">
这里我们设置第一列和第四列为不显示状态,那么就得到如下显示效果:
和前面两个布局管理器类似,我们也可以通过程序来控制表格布局管理器。不难想到这里我们需要四个类来完成,分别是TableLayout,TableLayout.LayoutParams,TableRow,TableRow.LayoutParams
下面来看一下TableLayout.LayoutParams的文档:
可以看出TableLayout.LayoutParams继承自LinearLayout.LayoutParams,其继承结构如下:
java.lang.Object
↳ android.view.ViewGroup.LayoutParams
↳ android.view.ViewGroup.MarginLayoutParams
↳ android.widget.LinearLayout.LayoutParams
↳ android.widget.TableLayout.LayoutParams
下面是TableRow.LayoutParams,其实它们都是类似的:
它的继承结构为:
java.lang.Object
↳ android.view.ViewGroup.LayoutParams
↳ android.view.ViewGroup.MarginLayoutParams
↳ android.widget.LinearLayout.LayoutParams
↳ android.widget.TableRow.LayoutParams
下面我将在XML布局管理文件中配置的数据表格用程序来进行编写,那么就需要准备数据,表格数据可以看作是二维表,那么很自然想到,在数据量不大时可以使用而为数组来表示,其代码如下:
package org.pioneer; import android.app.Activity; import android.os.Bundle; import android.view.ViewGroup; import android.widget.TableLayout; import android.widget.TableRow; import android.widget.TextView; public class TableLayoutDemoActivity extends Activity { private String tableData[][] = new String[][] { { "序号", "姓名", "地址", "性别" }, { "001", "Sarin", "辽宁省大连市高新园区七贤岭汇贤园七号腾飞软件园二号楼", "男" }, { "002", "Tom", "北京市", "男" } };// 定义显示的数据 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TableLayout layout = new TableLayout(this);// 定义布局管理器 TableLayout.LayoutParams layoutParams = new TableLayout.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT);// 定义布局管理器参数 layout.setBackgroundResource(R.drawable.ic_launcher);// 设置背景图片 for (int i = 0; i < tableData.length; i++) { TableRow row = new TableRow(this);// 定义TableRow for (int j = 0; j < tableData[i].length; j++) { TextView text = new TextView(this);// 定义TextView组件 text.setText(tableData[i][j]);// 设置TextView的显示文字 row.addView(text, j);// 向TableRow中添加TextView组件 } layout.addView(row);// 向布局管理器中添加表格行 } super.setContentView(layout, layoutParams);// 设置布局管理器 } }
对于二维数组的遍历必然是嵌套的循环来进行,运行程序,我们得到如下效果:
可以看到,我们之前设置的显示效果都不存在了,当然这可以通过代码继续设置样式,但该代码已经相当的复杂了,如果继续修改程序,那程序必然显得十分臃肿。所以对复杂布局我们采用XML文件的配置方式来进行是比较好的方法。
示例代码请参考附件
接下文
- TableLayoutDemo.rar (145.3 KB)
- 下载次数: 145
评论
4 楼
q316085319
2014-06-19
非常不错的学习网站:http://www.glmei.cn/
3 楼
lgp0203
2013-10-22
感谢LZ总结
2 楼
qianguming
2013-09-29
紧紧跟随13
1 楼
小色帝
2012-12-27
112344
发表评论
-
Objective-C学习笔记12:高级数据类型一
2013-03-03 21:52 5000接上文 之前介绍过变量和数据类型,那么我们来看 ... -
Objective-C学习笔记11:多态和动态类型
2013-03-03 11:20 8830接上文 多态是一个典型的面向对象概念。Obje ... -
Objective-C学习笔记十:继承二
2013-03-02 21:27 4724接上文 之前 ... -
Objective-C学习笔记九:继承一
2013-01-12 20:32 14940接上文 继承是面向对象的一个核心概念。在Obj ... -
Objective-C学习笔记八:类的定义二
2013-01-06 11:00 5272接上文 我们继续来扩展分数类Fraction, ... -
Android学习笔记17:中级视图组件DatePicker和TimePicker
2013-01-05 12:08 16154接上文 HTML5出现之前,我们在Wweb开发 ... -
Objective-C学习笔记七:类的定义一
2013-01-05 10:53 8616接上文 我们还是结合之前分数的示例来说明,只是 ... -
Objective-C学习笔记六:选择结构二
2013-01-03 20:24 5523接上文 之前介绍的都是独立的if选择结构,其实 ... -
Objective-C学习笔记五:选择结构一
2013-01-02 21:37 5676接上文 选择结构,或者称为分支结构,是编程语言 ... -
Android学习笔记16:布局管理器的嵌套
2012-12-31 12:29 9651接上文 布局管理器的嵌套就是将多种布局管理器混 ... -
Objective-C学习笔记四:循环结构
2012-12-31 11:07 8591接上文 ... -
Android学习笔记15:绝对布局管理器AbsoluteLayout
2012-12-29 12:13 11431接上文 有相对布局管理器,对应的,我们还有绝对 ... -
Objective-C学习笔记三:基本数据类型和表达式
2012-12-29 12:06 10114接上文 任何编程语言都会有数据类型,比如在Ja ... -
Objective-C学习笔记二:面向对象概述
2012-12-29 11:49 7104接上文 从字面来理解Objective-C就是 ... -
Android学习笔记14:相对布局管理器RelativeLayout
2012-12-28 13:25 14687接上文 相对 ... -
Objective-C学习笔记一:第一个应用程序
2012-12-27 12:17 14347iOS程序是基于Object ... -
Android学习笔记12:框架布局管理器FrameLayout
2012-10-10 10:09 19873接上文 框架布局管理器是Android布局管理 ... -
Android学习笔记11:线性布局管理器LinearLayout
2012-10-02 13:51 15768接上文 和Java GUI部分的概念类似,布局 ... -
Android学习笔记十:基本视图组件:ImageView和ImageButton
2012-09-08 14:05 21535接上文 在Web ... -
Android学习笔记九:基本视图组件:Spinner
2012-09-02 19:58 50050接上文 在Web开 ...
相关推荐
Android学习笔记(十):Activity-TableLayout和ScrollView
用Android Studio 2.3.3做的表格布局例子,主要用到<TableLayout>、标签,还有android:shrinkColumns="0,1,2"、android:layout_column="0"等设置。
Android移动应用开发表格布局TableLayout的特点.pdf 学习资料 复习资料 教学资源
Android移动应用开发表格布局TableLayout的常用属性.pdf 学习资料 复习资料 教学资源
android 利用TableLayout自动生成表格
表格布局的标签是TableLayout,TableLayout继承了LinearLayout。所以它依然是一个线性布局。 前言: 1、TableLayout简介 2、TableLayout行列数的确定 3、TableLayout可设置的属性详解 4、一个包含4个TableLayout布局...
TableLayout,实现动态添加和删除行,判断行中的数据是否含有空值,可以手动地输入数据,也可以选择数据添加在表格中,并实现统计表格中的数据。
Tablelayout类以行和列的形式对控件进行管理,每一行为一个TableRow对象,或一个View控件。当为TableRow对象时,可在TableRow下添加子控件,默认情况下,每个子控件占据一列。 当为View时,该View将独占一行。 三个...
界面布局之表格布局TableLayout+TableRow(代码).
《Android高薪之路:Android程序员面试宝典》目录: 第1章 Android入门 1 1 关于Android的非技术问题 1 1 1 为什么看好 Android 1 1 2 以前是否从事过Android的工作 做过哪些工作 1 1 3 你做的最复杂的界面是什么 1 ...
本文实例为大家分享了Android表格布局TableLayout的具体代码,供大家参考,具体内容如下 1.TableLayout TableLayout表格布局模型以行列的形式管理子控件,每一行为一个TableRow的对象, 当然也可以使一个View的...
本文主要介绍Android TableLayout布局,这里整理了TableLayout的资料,并附示例代码和实现效果图,有兴趣的小伙伴可以参考下
表格布局Tablelayout 特点:以水平或垂直方向排列 特点:通过相对定位排列 特点:使用表格行列的方式来排列组件 帧布局Framelayout 特点:开辟空白区域,帧里的 控件(层)叠加 线性布局 线性布局 Linear layout 线性...
表格布局模型以行列的形式管理子控件,每一行为一个TableRow的对象,当然也可以是一个View的对象。TableRow可以添加子控件,每添加一个为一列。 TableLayout属性: android:collapseColumns:将TableLayout里面指定的...
Android使用TableLayout动态布局实例: http://blog.csdn.net/lk_blog/article/details/7436380
android中利用tablelayout实现表格效果