Android布局管理

来源:互联网 发布:京东词条优化 编辑:程序博客网 时间:2024/06/08 06:39

     Android控件有很多,当这些控件在界面上显示时,必须得用布局方式对其进行管理,否则界面上将会显得杂乱无章。Android SDK中内置了5中布局模型,Android Developer可以通过这些布局方式对控件进行管理,从而构架出各种需要的应用页面。

 

第一种:线性布局

    线性布局,LinearLayout 是Android中一种最基本的布局方式,分为水平(horizontal)和垂直(vertical)两种,通过对参数的设置可以控制各个控件在整个布局中的大小。

    如以下代码:

   

<?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="wrap_content"><!-- 定义了一个线性布局,方式是垂直的 --><Buttonandroid:layout_width="fill_parent"android:layout_height="fill_parent"android:text="上"/><!-- 向线性布局中添加一个普通的按钮控件 --><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="horizontal"android:layout_width="wrap_content"android:layout_height="wrap_content"><!-- 向线性布局中添加一个水平的线性布局 --><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="左下"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="右下"/></LinearLayout></LinearLayout>


   可以发现,这个和html标记类似,可以进行嵌套。

   其中,android:orientation="vertical"  参数表明线性方式是垂直的   而android:orientation="horizontal"则表明是水平的

         android:layout_width="fill_parent" 表明此view的宽度是填充父view的,而android:layout_height="wrap_content"表明高度是根据此view中的内容改变而改变的。

 

第二种:表格布局

    表格布局,TableLayout 是以行列的形式来管理子控件的,在这种布局中的每一行都可以是一个view或者TableRow控件,并且TableRow控件中还能添加子控件。这点和HTML中的Table是类似的,每一行相当于一个<tr>  ,而TableRow中的每一列则相当于一个<td>,如下:

<?xml version="1.0" encoding="utf-8"?><TableLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:gravity="center"android:text="表头"/><!-- 在表格的第一行填充一个文本控件 --><TableRowandroid:gravity="center"><!-- 再向表格中添加一行 --><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="第1列"/><!-- 在该行的第一列添加一个文本控件 --><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="第2列"/><!-- 在该行的第二列添加一个文本控件 --></TableRow><TableRowandroid:gravity="center"><!-- 再向表格中添加一行 --><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="按钮1"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="按钮2"/></TableRow></TableLayout>


以上布局用HTML表示即为:

 <table><tr></tr><tr><td></td></tr><tr><td></td></tr> </table>


第三种:相对布局

   相对布局,RelativeLayout 是根据所选取的参照控件来进行布局的,设置的方位也可以通过参数来设定。比如:

 

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    ><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="这是一个很长很长的按钮哦!!!!"android:layout_centerInParent="true"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="左上方"android:layout_above="@id/button1"android:layout_alignLeft="@id/button1"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="右下方"android:layout_below="@id/button1"android:layout_alignRight="@id/button1"/></RelativeLayout>

由上可知,android:layout_above、android:layout_below、android:layout_alignLeft、android:layout_alignRight 等参数分别表示 上、下、左、右等四个相对位置,而
android:layout_centerInParent表明所选的参照控件不仅可以是其他子控件,也可以是父控件。

 

第四种:绝对布局

   依然和HTML相似,既然有相对布局,就会有绝对布局,也称坐标布局,AbsoluteLayout,这种布局方式非常灵活,可以自由控制控件的坐标,下面以一个登录页面为例:

<?xml version="1.0" encoding="utf-8"?><AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="用户名"android:layout_x="10px"android:layout_y="20px"/><EditTextandroid:layout_width="90px"android:layout_height="wrap_content"android:layout_x="70px"android:layout_y="10px"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="密  码"android:layout_x="10px"android:layout_y="75px"/><EditTextandroid:layout_width="90px"android:layout_height="wrap_content"android:layout_x="70px"android:layout_y="60px"/></AbsoluteLayout>

其中layout_x 和layout_y两个属性可以设置以左上角为中心的坐标轴的位置(水平方向为x)

 

第五种:单帧布局

  单帧布局,FrameLayout,不需要设置任何特殊的属性,这种布局中的所有控件都将被放置在布局的左上角,并覆盖在前一子控件的上层,举例略。

原创粉丝点击