Android学习笔记(八)布局之LinearLayout与TableLayout

    LinearLayout 线性布局,即从左到右,从上到下的布局,并且每一列或者每一行都只有一个元素,不管元素的大小如何。 linearLayout通过属性android:orientation来指定布局方向,取值可为horizontal(横向)、vertical(纵向), 横向配置例子:
<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>

效果如右图:
其中图一中的Button2的android:layout_gravity未设置
图二中的Button2 的android:layout_gravity="center_vertical"
图三中的Button2的android:layout-gravity=""bottom""
Android学习笔记(八)布局之LinearLayout与TableLayout_第1张图片
纵向配置例子:
<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>

效果如图:
其中图一中的Button2的android:layout_gravity="left"
图二中的Button2 的android:layout_gravity="center_horizontal"
图三中的Button2的android:layout-gravity="right"
Android学习笔记(八)布局之LinearLayout与TableLayout_第2张图片
需要注意的是在widget中也是有相应的属性,android:gravity,这里指的是widget中文字在widget中的排放位置,例如android:gravity="right"。

TableLayout

   按照行列来组织子视图的布局。表格布局包含一系列的 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)

eg:
<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>

显示效果:
Android学习笔记(八)布局之LinearLayout与TableLayout_第3张图片

如图效果所示,第1列已经被拉伸。

你可能感兴趣的:(Android学习笔记(八)布局之LinearLayout与TableLayout)