Android开发中的五大布局

Android布局是应用界面开发的重要一环,在Android中,共有五种布局方式,分别是:LinearLayout (线性布局),FrameLayout(框架布 局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局)。

一丶线性布局

线性布局的特点是:各个子元素彼此连接,中间不留空白 线性布局是程序中最常见的一种布局方式,线性布局可以分为水平线性布局和垂直线性布局两种,通过android:orientation属性可以设置线性布局的方向。

线性布局中,有 几个及其重要的参数,直接决定元素的布局和位置,这几个参数是

android:layout_gravity ( 是本元素相对于父元素的对齐方式 )
android:gravity=”bottom|right”(是本元素所有子元素的对齐方式,设置在父元素上,多个值用|隔开)
android:layout_gravity (子元素在父元素的对齐方式,设置在子元素上)

接下来介绍一个最简单布局方式,依次向下进行排列。

<?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">
    <Button android:text="Up" android:id="@+id/Button03" android:layout_width="fill_parent" android:layout_height="wrap_content"></Button>

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent">        
    <Button android:text="left" android:id="@+id/Button01" android:width="120px" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>    
    <Button android:text="right" android:id="@+id/Button02" android:width="120px" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
    </LinearLayout>
</LinearLayout>

二丶框架布局

FrameLayout是最简单的一个布局对象。它被定制为你屏幕上的一个空白备用区域,之后你可以在其中填充一个单一对象 — 比如,一张你要发布的图片。所有的子元素将会固定在屏幕的左上角;你不能为FrameLayout中的一个子元素指定一个位置。后一个子元素将会直接在前一个子元素之上进行覆盖填充,把它们部份或全部挡住(除非后一个子元素是透明的)。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content">
    <ImageView android:id="@+id/ImageView01" android:src="@drawable/circle_blue" android:layout_width="wrap_content" android:layout_height="wrap_content">
    </ImageView>
    <ImageView android:id="@+id/ImageView02" android:src="@drawable/circle_green" android:layout_width="wrap_content" android:layout_height="wrap_content">
    </ImageView>
    <ImageView android:id="@+id/ImageView03" android:src="@drawable/circle_red" android:layout_width="wrap_content" android:layout_height="wrap_content">
    </ImageView>

</FrameLayout>

三丶绝对布局

一坐标的方式来定位在屏幕上的位置,引起缺乏灵活性,在没有绝对定位的情况下相比其他类型的布局更难维护 在拖动控件,或有动画的空间中常用绝对布局;

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" >
    <TextView  android:id="@+id/lable1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="10dip" android:layout_y="10dip" android:text="inputname" />
    <EditText  android:id="@+id/entry" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_y="40dip" />
    <Button  android:id="@+id/test1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="190dip" android:layout_y="100dip" android:width="70dip" android:text="OK" />
    <Button  android:id="@+id/test2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="260dip" android:layout_y="100dip" android:width="70dip" android:text="Cancle" />
</AbsoluteLayout>

四丶相对布局

相对布局:一个控件的位置它决定于它和其他控件的关系,好处:比较灵活;缺点:掌握比较复杂。

相对布局常用的属性:
android:layout_above 将该控件的底部置于给定ID的控件之上;
android:layout_alignParentTop 如果为true,将该控件的顶部与其父控件的顶部对齐;
android:layout_centerHorizontal 如果为true,将该控件的置于水平居中;
android:layout_centerVertical 如果为true,将该控件的置于垂直居中;
android:layout_centerInParent 如果为true,将该控件的置于父控件的中央;

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent">
     <Button  android:id="@+id/btnmiddle" android:text="MiddleButton" android:layout_width="200px" android:layout_height="wrap_content" android:layout_centerInParent="true">     
     </Button>
      <Button  android:id="@+id/btnup" android:text="UpButton" android:layout_width="100px" android:layout_height="wrap_content" android:layout_above="@id/btnmiddle" android:layout_alignLeft="@id/btnmiddle">     
     </Button>
      <Button  android:id="@+id/btndown" android:text="downButton" android:layout_width="100px" android:layout_height="wrap_content" android:layout_below="@id/btnmiddle" android:layout_alignRight="@id/btnmiddle">     
     </Button>
</RelativeLayout>

五丶表格布局

Tablelayout类以行和列的形式对控件进行管理,每一行为一个TableRow对象,或一个View控件。
当为TableRow对象时,可在TableRow下添加子控件,默认情况下,每个子控件占据一列。
当为View时,该View将独占一行。

TableLayout可设置的属性:
android:stretchColumns 设置可伸展的列。该列可以向行方向伸展,最多可占据一整行。
android:shrinkColumns 设置可收缩的列。当该列子控件的内容太多,已经挤满所在行,那么该子控件的内容将往列方向显示。
android:collapseColumns 设置要隐藏的列。
android:layout_column 指定该单元格在第几列显示
android:layout_span 指定该单元格占据的列数(未指定时,为1)

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/TableLayout01" android:layout_width="fill_parent" android:layout_height="fill_parent">
    <TableRow android:gravity="center">
      <Button android:text="@+id/Button01" android:id="@+id/Button01" android:layout_width="wrap_content" android:layout_height="wrap_content">
       </Button>
    </TableRow>
    <TableRow android:gravity="center">
        <TextView android:text="第一行第0列" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
        <TextView android:text="第一行第1列" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
    </TableRow>
     <TableRow android:gravity="center">
        <TextView android:text="第二行第0列" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
        <TextView android:text="第二行第1列" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
    </TableRow>
</TableLayout>

作者:蒋尊科:原文地址

你可能感兴趣的:(android,Android开发)