一步一步学android之布局管理器——TableLayout
来源:互联网 发布:数据挖掘工具有哪些 编辑:程序博客网 时间:2024/05/21 13:29
前几天生病,博客没更新,今天接着学习第三个布局管理器TableLayout(表格布局),顾名思义就不难理解它是采用表格的形式对控件的布局进行管理的,在TableLayout布局中需要使用TableRow来对表格中的行进行控制,然后再把组件放在TableRow中,同样先来看看TableLayout的定义(http://developer.android.com/reference/android/widget/TableLayout.html):
一般TableLayout布局一般用在对程序进行列表输出的操作上,下面写个例子来看看TableLayout的用法:
效果如下:
main.xml:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/TableLayout1" android:layout_width="match_parent" android:layout_height="match_parent" > <TableRow> <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="请输入你想查询的问题...." > </EditText> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="查询" /> </TableRow> <View android:layout_height="2px" android:background="#ff909090" /> <TableRow> <TextView android:id="@+id/tx" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="请选择检索范围:" android:textSize="15sp" /> <RadioGroup android:id="@+id/choose" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checkedButton="@+id/china" android:orientation="horizontal" > <RadioButton android:id="@+id/china" android:text="中国" /> <RadioButton android:id="@+id/usa" android:text="美国" /> </RadioGroup> </TableRow></TableLayout>
上面的代码首先选择TableLayout进行布局,然后定义两个TableRow,之后在第一行中加入一个EditText和Button,第二行中加入一个TextView和RadioGroup,这些控件在控件篇都已经使用过,程序为了看起来有区别,就在第一行和第二行之间加了条横线,就是view那个标签。
前面说到TableLayout比较适合输出列表数据,下面同样写个例子来看看:
main.xml:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/TableLayout01" android:layout_width="match_parent" android:layout_height="match_parent" > <TableRow> <TextView android:layout_column="0" android:text="ID" android:layout_gravity="center_horizontal" android:padding="8px"/><!-- 定义组件的大小 --> <TextView android:layout_column="1" android:text="姓名" android:layout_gravity="center_horizontal" android:padding="8px"/> <TextView android:layout_column="2" android:text="EMAIL" android:layout_gravity="center_horizontal" android:padding="8px"/> <TextView android:layout_column="3" android:text="地址" android:layout_gravity="center_horizontal" android:padding="8px"/> </TableRow> <View android:layout_height="2px" android:background="#FF909090"/> <TableRow> <TextView android:layout_column="0" android:text="CSDN" android:gravity="center_horizontal" android:padding="3px"/> <TextView android:layout_column="1" android:text="CSDN博客" android:gravity="center_horizontal" android:padding="3px"/> <TextView android:layout_column="2" android:text="csdn.net" android:gravity="center_horizontal" android:padding="3px"/> <TextView android:layout_column="3" android:text="广东省广州市白云区河边" android:gravity="center_horizontal" android:padding="3px"/> </TableRow><TableRow> <TextView android:layout_column="0" android:text="ZLK" android:gravity="center_horizontal" android:padding="3px"/> <TextView android:layout_column="1" android:text="KAY" android:gravity="center_horizontal" android:padding="3px"/> <TextView android:layout_column="2" android:text="blog.csdn.net/Kaypro" android:gravity="center_horizontal" android:padding="3px"/> <TextView android:layout_column="3" android:text="广州" android:gravity="center_horizontal" android:padding="3px"/> </TableRow></TableLayout>
效果图如下:
可以发现有些数据显示不完整(广东省广州市白云区河边),出现这个情况我们可以设置TableLayout的属性android:shrinkColumns="3"(0开始),这句话是定义为可收缩列。同时TableLayout还有android:collapseColumns="0,3"属性设置那列不显示,总体修改后的main.xml如下:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/TableLayout01" android:layout_width="match_parent" android:layout_height="match_parent" android:collapseColumns="0,3" android:shrinkColumns="3"> <TableRow> <TextView android:layout_column="0" android:text="ID" android:layout_gravity="center_horizontal" android:padding="8px"/><!-- 定义组件的大小 --> <TextView android:layout_column="1" android:text="姓名" android:layout_gravity="center_horizontal" android:padding="8px"/> <TextView android:layout_column="2" android:text="EMAIL" android:layout_gravity="center_horizontal" android:padding="8px"/> <TextView android:layout_column="3" android:text="地址" android:layout_gravity="center_horizontal" android:padding="8px"/> </TableRow> <View android:layout_height="2px" android:background="#FF909090"/> <TableRow> <TextView android:layout_column="0" android:text="CSDN" android:gravity="center_horizontal" android:padding="3px"/> <TextView android:layout_column="1" android:text="CSDN博客" android:gravity="center_horizontal" android:padding="3px"/> <TextView android:layout_column="2" android:text="csdn.net" android:gravity="center_horizontal" android:padding="3px"/> <TextView android:layout_column="3" android:text="广东省广州市白云区河边" android:gravity="center_horizontal" android:padding="3px"/> </TableRow><TableRow> <TextView android:layout_column="0" android:text="ZLK" android:gravity="center_horizontal" android:padding="3px"/> <TextView android:layout_column="1" android:text="KAY" android:gravity="center_horizontal" android:padding="3px"/> <TextView android:layout_column="2" android:text="blog.csdn.net/Kaypro" android:gravity="center_horizontal" android:padding="3px"/> <TextView android:layout_column="3" android:text="广州" android:gravity="center_horizontal" android:padding="3px"/> </TableRow></TableLayout>效果图如下(android:shrinkColumns=“3”这里我把第三行忽略掉了,看不见效果,后面会有,不用担心)
前面提到的Layout都可以代码实现,TableLayout也同样可以,MainActivity.java:
package com.example.tablelayoutdemo;import android.annotation.SuppressLint;import android.app.Activity;import android.graphics.Color;import android.os.Bundle;import android.view.View;import android.view.ViewGroup;import android.view.ViewGroup.LayoutParams;import android.widget.TableLayout;import android.widget.TableRow;import android.widget.TextView;@SuppressLint("ParserError")public class MainActivity extends Activity {//定义好要显示的数据private String titleData[][] = new String[][] {{ "ID", "姓名", "EMAIL", "地址" },{ "CSDN", "CSDN", "csdn.net", "广东省广州市白云区河边" },{ "ZLK", "KAY", "blog.csdn.net/Kaypro", "广州" } };@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//新建TableLayoutTableLayout t = new TableLayout(this);//定义TableLayout的宽和高TableLayout.LayoutParams layoutParam = new TableLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.FILL_PARENT);//就是android:shrinkColumns="3"的意思t.setColumnShrinkable(3,true);//下面4行代码是对那条横线的定义View v = new View(this);v.setBackgroundColor(Color.BLACK);LayoutParams viewParams = new LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,2);v.setLayoutParams(viewParams);//设置表格的背景颜色t.setBackgroundColor(Color.YELLOW);//下面开始初始化for (int i = 0; i < this.titleData.length; i++) {//如果到了第二行就添加横线if(i==1){t.addView(v);}//创建表格行(第一层循环的作用就是行的建立)TableRow tr = new TableRow(this);for (int j = 0; j < this.titleData[i].length; j++) {//创建文本组件(第二层循环作用就是遍历行元素,建立textview,然后添加到当下循环下的tablerow中TextView tv = new TextView(this);tv.setText(this.titleData[i][j]);tr.addView(tv, j);}t.addView(tr);}setContentView(t, layoutParam);}}
效果图如下:
看见地址那列的河边的边字收缩下拉了吧,就是android:shrinkColumns="3"这句的作用。
- 一步一步学android之布局管理器——TableLayout
- 一步一步学android之布局管理器——LinearLayout
- 一步一步学android之布局管理器——FrameLayout
- 一步一步学android之布局管理器——RelativeLayout
- 一步一步学android之布局管理器——AbsoluteLayout
- android布局管理器之TableLayout
- Android布局方式之表格布局管理器(TableLayout)
- javaSwing布局管理器之TableLayout
- Android表格布局管理器TableLayout
- 12、从头学Android之布局之TableLayout表格布局
- 12、从头学Android之布局之TableLayout表格布局
- Android五种布局管理器之『TableLayout』
- Android五种布局管理器之『TableLayout』
- Android布局之TableLayout
- Android之TableLayout布局
- android之【TableLayout布局】
- Android之TableLayout布局
- Android 布局之TableLayout
- 编译libvirt源码,替换apt-get安装的libvirt包
- 关于IOS5 json文件的解析(新手级别)
- 用MFC制作一个倒计时小程序
- 安装directshw遇到的问题及解决
- poj 2398-几何二分搜索
- 一步一步学android之布局管理器——TableLayout
- 【Centos5.x】DNS 子域 && 邮件解析 && 别名
- MemCache深入学习(四)
- <据该家长反映,8月14日早晨7点多,
- Edit Box多行显示时如何使滚动条始终在下方
- directshw 编程实现视频播放
- 解决:extjs4.0官方API打不开
- [学习筆记] linux sqlite編程基础
- Multi-Byte/Unicode支持总结