Android布局管理

     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"
	>	<!-- 定义了一个线性布局,方式是垂直的 -->
	<Button
		android: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"
	>	<!-- 向线性布局中添加一个水平的线性布局 -->
		<Button
			android:layout_width="wrap_content"
			android:layout_height="wrap_content"
			android:text="左下"
		/>
		<Button
			android: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"
	>
	<TextView
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:gravity="center"
		android:text="表头"
	/>	<!-- 在表格的第一行填充一个文本控件 -->
	<TableRow
		android:gravity="center"
	>	<!-- 再向表格中添加一行 -->
		<TextView
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:text="第1列"
		/>	<!-- 在该行的第一列添加一个文本控件 -->
		<TextView
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:text="第2列"
		/>	<!-- 在该行的第二列添加一个文本控件 -->
	</TableRow>
	<TableRow
		android:gravity="center"
	>	<!-- 再向表格中添加一行 -->
		<Button
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:text="按钮1"
		/>	
		<Button
		android: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"
    >
	<Button
		android:id="@+id/button1"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:text="这是一个很长很长的按钮哦!!!!"
		android:layout_centerInParent="true"	
	/>
	<Button
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:text="左上方"
		android:layout_above="@id/button1"
		android:layout_alignLeft="@id/button1"
	/>
	<Button
		android: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"
    >
	<TextView
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:text="用户名"
		android:layout_x="10px"
		android:layout_y="20px"
	/>
	<EditText
		android:layout_width="90px"
		android:layout_height="wrap_content"
		android:layout_x="70px"
		android:layout_y="10px"
	/>
	<TextView
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:text="密  码"
		android:layout_x="10px"
		android:layout_y="75px"
	/>
	<EditText
		android:layout_width="90px"
		android:layout_height="wrap_content"
		android:layout_x="70px"
		android:layout_y="60px"
	/>
</AbsoluteLayout>

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

 

第五种:单帧布局

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值