<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:paddingBottom="20dp"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:paddingTop="20dp" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button1" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:text="Button2" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:text="Button3" />
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="20dp"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:paddingBottom="20dp"
android:orientation="vertical" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button1" />
<Button
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_gravity="left"
android:text="Button2" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:text="Button3" />
</LinearLayout>
按照行列来组织子视图的布局。表格布局包含一系列的 TableRow对象,用于定义行(实际上你也可以使用其它子对象,将在后面进行解释)。表格布局不为它的行、列和单元格显示表格线。每个行可以包含0个以上(包括0)的单元格; 每个单元格可以设置一个View对象.与行包含很多单元格一样, 表格包含很多列。表格的单元格可以为空.单元格可以象 HTML 那样跨列。
列的宽度由该列所有行中最宽的一个单元格决定.不过表格布局可以通过setColumnShrinkable() 方法或者 setColumnStretchable() 方法来标记某些列可以收缩或可以拉伸. 如果标记为可以收缩,列宽可以收缩以使表格适合容器的大小。如果标记为可以拉伸, 列宽可以拉伸以占用多余的空间。表格的总宽度由其父容器决定. 记住列可以同时具有可拉伸和可收缩标记是很重要的。在列可以调整其宽度以占用可用空间, 但不能超过限度时是很有用的.最后,你可以通过调用setColumnCollapsed()方法来隐藏列。
表格布局的子对象不能指定 layout_width
属性.宽度永远是 MATCH_PARENT
。不过子对象可以定义 layout_height
属性;其默认值是 WRAP_CONTENT. 如果子对象是 TableRow,其高度永远是WRAP_CONTENT。
无论是在代码还是在 XML 布局文件中,单元格必须安装索引顺序加入表格行. 列号是从 0 开始的.如果你不为子单元格指定列号,其将自动增值,使用下一个可用列号. 如果你跳过某个列号,他在表格行中作为空可以改对待.
虽然表格布局典型的子对象是表格行,实际上你可以使用任何视图类的子类, 作为表格视图的直接子对象.视图会作为只有一行并结合了所有列的单元格显示。
XML属性
属性名称 | 描述 |
android:collapseColumns | 隐藏从0开始的索引列。列直接必须用逗号隔开:1, 2, 5。非法或重复的设置将被忽略。 相关方法 setColumnCollapsed(int,boolean) |
android:shrinkColumns | 收缩从0开始的索引列。列直接必须用逗号隔开:1, 2, 5。非法或重复的设置将被忽略。你可以通过"*"代替收缩所有列。注意一列能同时表示收缩和拉伸。 相关方法 setColumnCollapsed(int,boolean) |
android:stretchColumns | 拉伸从0开始的索引列。列直接必须用逗号隔开:1, 2, 5。非法或重复的设置将被忽略。你可以通过"*"代替收缩所有列。注意一列能同时表示收缩和拉伸。 相关方法 setColumnCollapsed(int,boolean) |
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:stretchColumns="1"
tools:context=".MainActivity" >
<TableRow >
<TextView
android:layout_column="1"
android:text="Open..."
android:padding="3dip"/>
<TextView
android:text="Ctrl-0"
android:gravity="right"
android:padding="3dip"/>
</TableRow>
<TableRow>
<TextView
android:layout_column="1"
android:text="Save..."
android:padding="3dip"/>
<TextView
android:text="Ctrl-S"
android:gravity="right"
android:padding="3dip"/>
</TableRow>
<TableRow >
<TextView
android:layout_column="1"
android:text="Save As..."
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="X"
android:padding="3dip"/>
<TextView
android:text="Import..."
android:padding="3dip"/>
</TableRow>
<TableRow>
<TextView
android:text="X"
android:padding="3dip"/>
<TextView
android:text="Export..."
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"
android:text="Quit"
android:padding="3dip"/>
</TableRow>
</TableLayout>
显示效果: