布局管理器

   Android的布局管理器本身就是一个UI组件,所有的布局管理器都是ViewGroup的子类。图2.7显示了Android布局管理器的类图。

图2.7   Android布局管理器的类图

从图2.7可以看出,所有布局都可作为容器类使用,因此可以调用多个重载的addView()向布局管理器中添加组件。实际上,我们完全可以用一个布局管理器嵌套到其他布局管理器中——因为布局管理器也继承了View,也可以作为普通UI组件使用。

线性布局

      线性布局由LinearLayout类来代表,它会将容器里的组件一个挨着一个地排列起来。LinearLayout可以控制各组件横向排列(通过设置android:orientation属性控制),也可控制各组件横向排列。

       Android的线性布局不会换行,当组件一个挨着一个地排列到头之后,剩下的组件将不会被显示出来。

       例如定义如下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"
    android:gravity="bottom|center_horizontal"
    >
<Button  
    android:id="@+id/bn1"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/bn1"
    />
<Button  
    android:id="@+id/bn2"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/bn2"
    />
<Button  
    android:id="@+id/bn3"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/bn3"
    />
<Button  
    android:id="@+id/bn4"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/bn4"
    />
<Button  
    android:id="@+id/bn5"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/bn5"
    />    
</LinearLayout>

       上面的界面布局非常简单,它只是定义了一个简单的线性布局,并在线性布局中定义了5个按钮。定义线性布局时使用粗体字代码指定了垂直排列所有组件,而且所有组件对齐到容器底部并且水平居中,运行上面的程序,使用Activity显示上面的界面布局,将看到如图2.8所示界面。

 

图2.8 垂直的线性布局,底部、居中对齐

 如果将上面的布局文件中android:gravity="bottom|center_horizontal"改为android:gravity="right|center_vertical"——也就是所有组件水平右对齐、垂直居中,再次使用Activity显示该界面布局将看到如图2.9所示界面。

图2.9垂直的线性布局,水平居中、垂直居中对齐

如果我们将上面的线性布局的方向改为水平,也就是设置android:orientation="horizontal",并设置gravity="top",再次使用Activity来显示该界面布局将看到如图2.10所示界面

图2.10水平的线性布局,顶端对齐

从图2.10所示的运行结果可以看出,当采用线性布局来管理5个按钮组件时,由于这5个按钮组件无法在一行中同时显示出来,但LinearLayout不会换行显示多余的组件,因此图2.10中看不到第5个按钮。

 

posted @ 2013-09-25 21:06  TealerProg  Views(673)  Comments(0Edit  收藏  举报