android学习笔记(12)android表格布局

2014-12-7 10:11:14     10 人阅读    

表格布局
        表格布局由TableLayout所代表,表格布局采用行、列的形式来管理UI组件,TableLayout 并不需要明确地声明包含多少行、多少列,而是通过添加TableRow、其他组件来控制表格的 行数和列数。
        每次向TableLayout中添加一个TableRow,该TableRow就是一个表格行,TableRow也
是容器,因此它也可以不断地添加其他组件,每添加一个子组件该表格就增加一列。
       如果直接向TableLayout中添加组件,那么这个组件将直接占用一行。
        在表格布局中,列的宽度由该列中最宽的那个单元格决定,整个表格布局的宽度则取决 于父容器的宽度(默认总是占满父容器本身)。
        在表格布局管理器中,可以为单元格设置如下三种行为方式。
Shrinkable:如果某个列被设为Shrinkable,那么该列的所有单元格的宽度可以被 收缩,以保证该表格能适应父容器的宽度。
Stretchable:如果某个列被设为Stretchable,那么该列的所有单元格的宽度可以被 拉伸,以保证组件能完全填满表格空余空间。
Collapsed:如果某个列被设为Stretchable,那么该列的所有单元格会被隐藏。 TableLayout继承了 LinearLayout,因此它完全可以支持LinearLayout所支持的全部XML

属性,除此之外,TableLayout还支持如表2.5所示的XML属性。
表2.5 TableLayout的常用XML属性及相关方法
XML厲性                 相关方法                                                             说 明
android:collapseColumns setColumnCollapsed(int,boolean) 设筲需要被隐藏的列的列序号,多个列序号之间用逗号隔幵
android: shrinkColu mns setShrinkAllColumns(boolean) 设苒允许被收缩的列的列序号,多个列序号之N用逗y隔幵
android:stretchColumns setStretchAllColumns(boolean) 设莨允许被拉伸的列的列序号.多个列序兮之间用逗兮瞅开


下面的程序示范了如何使用TableLayout来管理组件的布局,下面是界面布局所使用的 布局文件。
程序清单:codes\02\2.2\TableLayoiuTest\res\layout\main.xml

<?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="fill_parent"
 >
<!-- 定义第一个表格布局,指定第2列允许收缩,第3列允许拉伸 -->
<TableLayout android:id="@+id/TableLayout01" 
 android:layout_width="fill_parent" 
 android:layout_height="wrap_content"
 android:shrinkColumns="1"
 android:stretchColumns="2"
>
<!-- 直接添加按钮,它自己会占一行 -->
<Button android:id="@+id/ok1" 
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="独自一行的按钮"
 />
<!-- 添加一个表格行 -->
<TableRow>
<!-- 为该表格行添加3个按钮 -->
<Button android:id="@+id/ok2" 
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="普通按钮"
 />  
<Button android:id="@+id/ok3" 
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="允许被收缩的按钮"
 /> 
<Button android:id="@+id/ok4" 
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="允许被拉伸的按钮"
 />
</TableRow> 
</TableLayout>
<!-- 定义第二个表格布局 ,指定第二列隐藏-->
<TableLayout android:id="@+id/TableLayout01" 
 android:layout_width="fill_parent" 
 android:layout_height="wrap_content"
 android:collapseColumns="1"
>
<!-- 直接添加按钮,它自己会占一行 -->
<Button android:id="@+id/ok5" 
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text=" 独自一行的按钮 "
 />
<!--定义一个表格行-->
<TableRow>
<!-- 为该表格行添加3个按钮 -->
<Button android:id="@+id/ok6" 
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="普通按钮1"
 />  
<Button android:id="@+id/ok7" 
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="被隐藏的按钮"
 /> 
<Button android:id="@+id/ok8" 
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="普通按钮 3"
 />
</TableRow> 
</TableLayout>
<!-- 定义第三个表格布局 ,指定第2、3两列可以被拉伸-->
<TableLayout android:id="@+id/TableLayout01" 
 android:layout_width="fill_parent" 
 android:layout_height="wrap_content"
 android:stretchColumns="1,2"
>
<!-- 直接添加按钮,它自己会占一行 -->
<Button android:id="@+id/ok9" 
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="独自一行的按钮"
 />
<!--定义一个表格行-->
<TableRow>
 
</TableLayout>
</LinearLayout>

上面页面中定义了三个TableLayout,三个TableLayout中粗体字代码指定了它们对各 列的控制行为:
第一个TableLayout,指定第2列允许收缩,第3列允许拉伸。
第二个TableLayout,指定第2列被隐藏。
第三个TableLayout,指定第2列和第3列允许拉伸。
接下来为布局中第一个TableLayout添加两行,第一行不使用TableRow,直接添加一个 Button,那么该Button自己将占用整行。第二行先添加一个TableRow,并为TableRow添加 三个Button,那说明该表格将包含三列。第一个表格的界面布局代码如下。
程序清单:codes\02\2.2\TableLayoutTest\res\layout\main.xml

<!-- 定义第二个表格布局 ,指定第二列隐藏-->
<TableLayout android:id="@+id/TableLayout01" 
 android:layout_width="fill_parent" 
 android:layout_height="wrap_content"
 android:collapseColumns="1"
>
<!-- 直接添加按钮,它自己会占一行 -->
<Button android:id="@+id/ok5" 
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text=" 独自一行的按钮 "
 />
<!--定义一个表格行-->
<TableRow>
<!-- 为该表格行添加3个按钮 -->
<Button android:id="@+id/ok6" 
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="普通按钮1"
 />  
<Button android:id="@+id/ok7" 
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="被隐藏的按钮"
 /> 
<Button android:id="@+id/ok8" 
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="普通按钮 3"
 />
</TableRow> 

| 在上面的界面布局文件中我们直接把按钮上的文本写在布局文件中,这不
是一种好的做法,因为Android推荐将这些字符串集中放到XML文件中管理。 但此处为了编程简单,所以直接在XML布局文件中给出了按钮文本的字符串。
接下来为布局中第2个TableLayout添加两行,第1行不使用TableRow,直接添加一个 Button,那么该Button自己将占用整行。第2行先添加一个TableRow,并为TableRow添加 三个Button,那说明该表格将包含三列。第2个表格内容与第1个表格内容基本相似,但由 于我们为第2个表格指定了 androidxollapseColumns="r,这意味着第2行中间的按钮将会被 隐藏。
接下来为布局中第3个TableLayout添加三行,第1行不使用TableRow,直接添加一个 Button,那么该Button自己将占用整行。第2行先添加一个TableRow,并为TableRow添加 三个Button,那说明该表格将包含三列。第3行也先添加一个TableRow,并为TableRow添 加两个按钮,这意味着表格的第3行只有两个单元格,第3个单元为空。
第3个表格布局管理器的内容如下。
程序清单:c〇des\02\2.2\TableLayoutTest\res\layout\main.xml

<!--定义一个表格行-->
<TableRow>
<!-- 为该表格行添加3个按钮 -->
<Button android:id="@+id/ok10" 
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="普通按钮"
 />  
<Button android:id="@+id/ok11" 
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="允许被拉伸的按钮"
 /> 
<Button android:id="@+id/ok12" 
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="允许被拉伸的按钮"
 />
</TableRow> 
<!--定义一个表格行-->
<TableRow>
<!-- 为该表格行添加2个按钮 -->
<Button android:id="@+id/ok13" 
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="普通按钮"
 />  
<Button android:id="@+id/ok14" 
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="允许被拉伸的按钮"
 />
</TableRow> 


原文地址:http://www.itmmd.com/201412/270.html
该文章由 萌萌的IT人 整理发布,转载须标明出处。

linux命令详解(12)root权限,获得超级用户权限   上一篇
下一篇  android学习笔记(11)android布局管理器详解

精彩回复
发表评论
姓名:       

《程序员app》专门为程序员量身定做!