(转)【Android】界面布局之TableLayout(表格布局)

   

       表格布局模型以行列的形式管理子控件,每一行为一个TableRow的对象,当然也可以是一个View的对象。TableRow可以添加子控件,每添加一个为一列。
  android:layout_colum官方解释:The index of the column in which this child should be,也即是设置该控件在TableRow中所处的列。
  android:layout_span官方解释:Defines how many columns this child should span,也即是设置该控件所跨越的列数。
  android:collapseColumns官方解释:The 0 based index of the columns to collapse. The column indices must be separated by a comma: 1, 2, 5.也即是将TableLayout里面指定的列隐藏,若有多列需要隐藏,请用逗号将需要隐藏的列序号隔开。
  android:stretchColumns官方解释:The 0 based index of the columns to stretch. The column indices must be separated by a comma: 1, 2, 5. You can stretch all columns by using the value "*" instead. Note that a column can be marked stretchable and shrinkable at the same time.也即是设置指定的列为可伸展的列,可伸展的列会尽量伸展以填满所有可用的空间,若有多列需要设置为可伸展,请用逗号将需要伸展的列序号隔开。
  android:shrinkColumns官方解释:The 0 based index of the columns to shrink. The column indices must be separated by a comma: 1, 2, 5. You can shrink all columns by using the value "*" instead. 设置指定的列为可收缩的列。当可收缩的列太宽以至于让其他列显示不全时,会纵向延伸空间。当需要设置多列为可收缩时,将列序号用逗号隔开。
  下面用一个例子简单说明TableLayout的用法:
  <?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:stretchColumns="1"><!-设置列1为可伸展的列,可伸展的列会尽量伸展以填满所有可用的空间,列的编号,从0开始-->
  <TableRow>
  <TextView
  android:layout_column="1"
  android:text="打开..."
  android:padding="3dip" /><!-dip:依赖于设备的像素;px:像素-->
  <TextView
  android:text="Ctrl-O"
  android:gravity="right"
  android:padding="3dip" />
  </TableRow>
  <TableRow>
  <TextView
  android:layout_column="1"
  android:text="保存..."
  android:padding="3dip" />
  <TextView
  android:text="Ctrl-S"
  android:gravity="right"
  android:padding="3dip" />
  </TableRow>
  <TableRow>
  <TextView
  android:layout_column="1"
  android:text="另存为..."
  android:padding="3dip" />
  <TextView
  android:text="Ctrl-Shift-S"
  android:gravity="right"
  android:padding="3dip" />
  </TableRow>
  <View
  android:layout_height="2dip"
  android:background="#FF909090" />
  <TableRow>
  <TextView
  android:text="*"
  android:padding="3dip" />
  <TextView
  android:text="导入..."
  android:padding="3dip" />
  </TableRow>
  <TableRow>
  <TextView
  android:text="*"
  android:padding="3dip" />
  <TextView
  android:text="导出..."
  android:padding="3dip" />
  <TextView
  android:text="Ctrl-E"
  android:gravity="right"
  android:padding="3dip" />
  </TableRow>
  <View
  android:layout_height="2dip"
  android:background="#FF909090" />
  <TableRow>
  <TextView
  android:layout_column="1" <!-设置该控件在TableRow中所在的列号,默认从0开始编号-->
  android:text="退出"
  android:padding="3dip" />
  </TableRow>
  </TableLayout>
  对应的模拟器效果图如下所示:


  从效果图可以看出,该布局总共有三列,第一个TableRow里面的控件,从第1列开始布局。如果去掉所有控件的属性” android:layout_column="1"”,显示效果如下所示(总共3列,也即第0、1、2列,每一列都用虚线框标示):


  另外一个例子
  布局文件如下所示:
  <?xml version="1.0" encoding="utf-8"?>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  >
  <TableLayout
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:collapseColumns="1" ><!-将TableLayout里面的第1列隐藏,若有多列需要隐藏,用逗号隔开:android:collapseColumns=“0,1”-->
  <TextView
  android:text="表一"
  android:gravity="center"
  />
  <TableRow>
  <TextView
  android:text="列0"
  android:background="@drawable/dot"/><!-设置控件的背景图片,这是一个可伸缩的9Patch PNG格式的图片-->
  <TextView
  android:text="列1"
  android:background="@drawable/dot"/>
  </TableRow>
  </TableLayout>
  <TableLayout
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:stretchColumns="1"><!-设置第1列为可伸展的列,可伸展的列会尽量伸展以填满所有可用的空间,若有多列需要设置为可伸展时,
  将列序号用逗号隔开,例如:android:stretchColumns=“0,1”-->
  <TextView
  android:text="表二"
  android:gravity="center" />
  <TableRow>
  <TextView
  android:text="列0不能伸展"
  android:background="@drawable/dot"/>
  <TextView
  android:text="列1可以伸展"
  android:gravity="right"
  android:background="@drawable/dot"/>
  </TableRow>
  </TableLayout>
  <TableLayout
  android:layout_width="fill_parent"
  android:layout_height="wrap_content" >
  <TextView
  android:text="表三"
  android:gravity="center" />
  <TableRow>
  <TextView
  android:text="这一列很长,将会造成下一列无法显示或显示不全"
  android:background="@drawable/dot" />
  <TextView
  android:text="这一列被挤到了屏幕外"
  android:background="@drawable/dot"/>
  </TableRow>
  </TableLayout>
  <TableLayout
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:shrinkColumns="0"><!-设置第0列为可收缩的列。当可收缩的列太宽以至于让其他列显示不全时,会纵向延伸空间。
  当需要设置多列为可收缩时,将列序号用逗号隔开,例如:android:shrinkColumns=“0,1”-->
  <TextView
  android:text="表四"
  android:gravity="center"
  />
  <TableRow>
  <TextView
  android:text="由于设置成了可收缩,所以这一列不管有多长都不会把其他列挤出去"
  android:background="@drawable/dot" />
  <TextView
  android:text="这一列会被显示完全"
  android:background="@drawable/dot" />
  </TableRow>
  </TableLayout>
  </LinearLayout>
  对应的模拟器效果图如下所示:


  布局分析:最外层用了一个垂直的linearLayout来放置里面的4个TableLayout,每个TableLayout由两行构成,分别是一个TextView和一个TableRow,每一个TableRow都由两个TextView组成了两列。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值