Android的六大布局

Android的布局方式有以下几种

声明Android程序布局有两种方式:

1) 使用XML文件描述界面布局;

2) 在Java代码中通过调用方法进行控制。

我们既可以使用任何一种声明界面布局的方式,也可以同时使用两种方式。

使用XML文件声明有以下3个特点:

1) 将程序的表现层和控制层分离;
2) 在后期修改用户界面时,无须更改程序的源程序;
3) 可通过WYSIWYG可视化工具直接看到所设计的用户界面,有利于加快界面设计的过程。
建议尽量采用XML文件声明界面元素布局。在程序运行时动态添加界面布局会大大降低应用响应速度,但依然可以在必要时动态改变屏幕内容。

六大界面布局方式包括: 线性布局(LinearLayout)、框架布局(FrameLayout)、表格布局(TableLayout)、相对布局(RelativeLayout)、绝对布局(AbsoluteLayout)和网格布局(GridLayout) 。

所有布局:
1. LinearLayout–线性布局
2. RelativeLayout–相对布局
3. TableLayout–表格布局
4. GridLayout–Android 4.0新增的网格布局
5. FrameLayout–帧布局
6. AbsoluteLayout–绝对布局(已经被废弃,不推荐使用)

使用方法:
1. LinearLayout–线性布局
LinearLayout容器中的组件一个挨一个排列,通过控制android:orientation属性,可控制各组件是横向排列还是纵向排列。

XML属性 相关方法 说明
android:gravity setGravity(int) 设置布局管理器内组件的对齐方式
android:orientation setOrientation(int) 设置布局管理器内组件的排列方式,可以设置为horizontal、vertical两个值之一

其中,gravity属性支持top, left, right, center_vertical, fill_vertical, center_horizontal, fill_horizontal, center, fill, clip_vertical, clip_horizontal。也可以同时指定多种对齐方式的组合。

2. RelativeLayout–相对布局

参考其他控件进行布局,默认为父控件。
有三种类型的属性:

属性值是true或false
android:layout_centerHrizontal 水平居中
android:layout_centerVertical 垂直居中
android:layout_centerInparent 相对于父元素完全居中。
android:layout_alignParentBottom 位于父元素的下边缘
android:layout_alignParentTop 位于父元素的上边缘
android:layout_alignParentLeft 位于父元素的左边缘
android:layout_alignParentRight 位于父元素的右边缘
属性值是”@id/*“
android:layout_below 在某元素的下方
android:layout_above 在某元素的上方
andorid:layout_toRightOf 在某元素的右方
android:layout_toLeftOf 在某元素的左方
android:layout_alignBottom 和某元素下方对齐
android:layout_alignTop 和某元素上方对齐
android:layout_alignRight 和某元素右方对齐
android:layout_alignLeft 和某元素左方对齐
属性值是数值
android:layout_marginLeft 离某元素左边缘的距离
android:layout_marginRight 离某元素右边缘的距离
android:layout_marginTop 离某元素上边缘的距离
android:layout_marginBottom 离某元素下边缘的距离

3. TableLayout–表格布局

TableLayout继承自Linearout,本质上仍然是线性布局管理器。表格布局采用行、列的形式来管理UI组件,并不需要明确地声明包含多少行、多少列,而是通过添加TableRow、其他组件来控制表格的行数和列数。

每向TableLayout中添加一个TableRow就代表一行;

每向TableRow中添加一个一个子组件就表示一列;

如果直接向TableLayout添加组件,那么该组件将直接占用一行;

在表格布局中,可以为单元格设置如下三种行为方式:

Shrinkable:该列的所有单元格的宽度可以被收缩,以保证该表格能适应父容器的宽度;
Strentchable:该列所有单元格的宽度可以被拉伸,以保证组件能完全填满表格空余空间;
Collapsed:如果该列被设置为Collapsed,那么该列的所有单元格会被隐藏;

4. GridLayout–Android 4.0新增的网格布局

GridLayout是Android4.0增加的网格布局控件,与之前的TableLayout有些相似,它把整个容器划分为rows × columns个网格,每个网格可以放置一个组件。性能及功能都要比tablelayout好,比如GridLayout布局中的单元格可以跨越多行,而tablelayout则不行,此外,其渲染速度也比tablelayout要快。

5. FrameLayout–帧布局
FrameLayout直接继承自ViewGroup组件。帧布局为每个加入其中的组件创建一个空白的区域(称为一帧),每个子组件占据一帧,这些帧会根据gravity属性执行自动对齐。

6. AbsoluteLayout–绝对布局(已经被废弃,不推荐使用)
即Android不提供任何布局控制,而是由开发人员自己通过X坐标、Y坐标来控制组件的位置。每个组件都可指定如下两个XML属性:

layour_x;
layout_y;
绝对布局已经过时,不应使用或少使用。

猜你喜欢

转载自blog.csdn.net/qq_37567866/article/details/80564169