Android 开发(二)布局管理器


在安卓开发中,由于组件在窗体中的位置和大小不确定,因此通过安卓提供的布局管理器来控制组件的位置和大小
对以下五种布局管理器,分别提供了对应的五种布局方式(线性布局、表格布局、帧布局、相对布局、绝对布局)

1. 线性布局管理器

1.1 定义

 线性布局是将放入其中的组件按照垂直或水平方向来 ,也就是控制放入其中的组件横向排列或纵向排列。在线性布局中,对于垂直排列,每一行只能放一个组件,对于水平排列,每一列只能放一个组件。并且,安卓的线性布局不会换行,当组件一个挨着一个排列到窗体的边缘后,剩下的组件将不会被显示出来。

1.2 实现方式

1.2.1 在 XML 布局文件中定义线性布局管理器(推荐使用)

通过使用<LinearLayout>标记实现,语法格式如下:

<LinearLayout 属性列表>
</LinearLayout>

如果该布局管理器作为布局文件的根节点,则需要加入命名空间:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 属性列表>
</LinearLayout>

其中,属性列表的可选项如下:

android:layout_width="fill_parent"                   宽度,值为fill_parent(宽度与父容器(窗口)宽度相同)、match_parent(与fill_parent作用相同,Android 2.2 后推荐使用此值)、warp_content(组件的宽度恰好能包裹它的内容)
android:layout_height="fill_parent"                	 高度,值的含义与宽度相同
android:orientation="vertical"          			 布局管理器内组件的排列方式,分为垂直排列(vertical)和水平排列(horizontal)
android:gravity="center"                			 布局管理器内组件的对齐方式,可设置多个属性值,属性值之间通过'|'分隔
android:id="@+id/引用值"                 			 使用 XML 布局文件和 Java 代码混合控制 UI 界面时需要使用
android:background=""     							 设置背景,值为图片资源文件(@drawable/图片资源名称)或颜色值(#ffffffff),颜色值中 # 后分四部分,分别是透明度、R、G、B
android:weight="1"									 设置组件占据空间的比重

修改窗体的主题:pro-name/AndroidManifest.xml
 修改<activity>标记的 android:theme属性

1.2.2 使用 Java 代码创建线性布局管理器

2. 表格布局管理器

2.1 定义

 表格布局与常见的表格类似,以行、列的形式来管理放入其中的 UI 组件。

2.2 实现方式

2.2.1 在 XML 布局文件中定义表格布局管理器(推荐使用)

 使用<TableLayout>标记定义,在表格布局中,可以添加多个<TableRow>标记,每个<TableRow>标记表示一行,由于<TableRow>标记也是容器,所以在该标记中还可以添加其他组件,在<TableRow>标记中,每添加一个组件,表格就会增加一列,在表格布局中,列可以被隐藏,也可以被设置为伸展的,从而填充可利用的屏幕空间,也可以设置为强制收缩,直到表格匹配屏幕大小,若直接在<TableLayout>添加组件,该组件会独占一行。

<TableLayout 属性列表>
	<TableRow 属性列表>需要添加的 UI 组件</TableRow>
	......
</TableLayout>

如果该布局管理器作为布局文件的根节点,则需要加入命名空间:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 属性列表>
	<TableRow 属性列表>需要添加的 UI 组件</TableRow>
	......
</TableLayout>

<TableLayout>特有的属性列表如下:

android:collapseColumns="0,1"			设置需要被隐藏的列的列序号(序号从0开始),多个列序号之间中','分隔
android:shrinkColumns="0,1"			    设置需要被收缩的列的列序号(序号从0开始),多个列序号之间中','分隔
android:stretchColumns="0,1"			设置需要被拉伸的列的列序号(序号从0开始),多个列序号之间中','分隔

2.2.2 使用 Java 代码创建表格布局管理器

2.3 特点

继承于线性布局管理器,因此,支持线性布局管理器的所有 XML 属性

3. 帧布局管理器

3.1 定义

 每加入一个组件,都将创建一个空白的区域,通常称为一帧,这些帧会根据 gravity 属性执行自动对齐。默认情况下,帧布局是从屏幕的左上角(0,0)坐标点开始布局 ,多个组件层叠排序,后面的组件覆盖前面的组件。

3.2 实现方式

3.2.1 在 XML 布局文件中定义帧布局管理器(推荐使用)

通过使用<FrameLayout>标记实现,语法格式如下:

<FrameLayout 属性列表>
</FrameLayout>

如果该布局管理器作为布局文件的根节点,则需要加入命名空间:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 属性列表>
</FrameLayout>

<FrameLayout>特有的属性列表的可选项如下:

android:foreground=""                   设置前景图片,值为图片资源文件
android:foregroundGravity="center"      设置前景图片显示的位置,值可以为多个,属性值之间用'|'分隔,多个值用来分别设置在水平和垂直方向上的位置

3.2.2 使用 Java 代码创建帧布局管理器

4. 相对布局管理器

4.1 定义

 相对布局是指按照组件之间的相对位置来布局,如某个组件在另一个组件的左边、右边、上方或下方等。

4.2 实现方式

4.2.1 在 XML 布局文件中定义相对布局管理器(推荐使用)

通过使用<RelativeLayout>标记实现,语法格式如下:

<RelativeLayout 属性列表>
</RelativeLayout>

如果该布局管理器作为布局文件的根节点,则需要加入命名空间:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 属性列表>
</RelativeLayout>

<RelativeLayout>特有的属性列表的可选项如下:

android:gravity="center"                  设置子组件的对齐方式,值可以为多个,属性值之间用'|'分隔,多个值用来分别设置在水平和垂直方向上的位置
android:ignoreGravity=""      			  指定不受 android:gravity 属性影响的组件,值为组件的 ID

4.2.2 使用 Java 代码创建相对布局管理器

4.3 LayoutParams 类

4.3.1 简介

 由于相对布局管理器本身所提供的属性列表不能满足组件布局的要求,因此,额外相对布局管理器提供了内部类 RelativeLayout.LayoutParams 类来扩展支持的 XML 属性,从而更好的实现组件布局。

4.3.2 属性介绍

注:以下所有属性均需要在布局管理器内部的组件的属性列表中使用
在这里插入图片描述

5. 绝对布局管理器

绝对布局管理器在 Android 2.0 中已标记为过期,不再使用
绝对布局管理器的功能可通过帧布局管理器和相对布局管理器替代

其他文章

Android 开发(一)控制 UI 界面
Android 开发(二)布局管理器
Android 开发(三)基本组件

发布了15 篇原创文章 · 获赞 6 · 访问量 1293

猜你喜欢

转载自blog.csdn.net/qq_39100983/article/details/104758899