首先介绍一下安卓的五大布局分别是什么?
- 线性布局(LinearLayout)
- 相对布局(RelativeLayout)
- 帧布局(FrameLayout)
- 表格布局(TableLayout)
- 绝对布局(AbsoluteLayout)
掌握五大布局是学好安卓的基础,下面就详细介绍这五大布局:
1. 线性布局:
可控制各组件排列的方向,可以是水平方法,也可以是垂直方向。一般当你使用Eclipse创建一个线性布局时,默认的的是“vertical”。
设置水平方向排列:android:orientation="horizontal"
设置垂直方向排列:android:orientation="vertical"
可以通过gravity属性来设置整个布局内各组件的对齐方式
不过需注意的一点是:android中线性布局不会自动换行,当个组件一个挨着一个排列占满屏幕后,剩下的组件将不会被显示出来。
2. 相对布局:
相对布局是按照各个组件相对位置来布局的,例如在某个组件的左边,右边,上方或下方。
如果说A组件的位置由B组件位置来决定,那么就需要先定义好B组件的位置,再定义A组件的相对位置。
相对布局相对来说是我用的比较多的一种布局:下面介绍一下它的相关属性:
**第一类:属性值为true或false**
android:layout_centerHrizontal 水平居中
android:layout_centerVertical 垂直居中
android:layout_centerInparent 相对于父元素完全居中
android:layout_alignParentBottom 贴紧父元素的下边缘
android:layout_alignParentLeft 贴紧父元素的左边缘
android:layout_alignParentRight 贴紧父元素的右边缘
android:layout_alignParentTop 贴紧父元素的上边缘
android:layout_alignWithParentIfMissing 如果对应的兄弟元素找不到的话就以父元素做参照物
**第二类:属性值必须为id的引用名“@id/id-name”**
android:layout_below 在某元素的下方
android:layout_above 在某元素的的上方
android:layout_toLeftOf 在某元素的左边
android:layout_toRightOf 在某元素的右边
android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐
android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐
android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐
android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐
**第三类:属性值为具体的像素值,如30dip,40px**
android:layout_marginBottom 离某元素底边缘的距离
android:layout_marginLeft 离某元素左边缘的距离
android:layout_marginRight 离某元素右边缘的距离
android:layout_marginTop 离某元素上边缘的距离
3. 表格布局:
表格布局是通过行和列来管理各个组件的,它并不需要声明包含多少行、多少列,而是通过添加TableRow、其它组件来控制行数和列数的。
一个TableRow就表示TableLayout中的每一行,这一行可以由多个子元素(其它组件)组成。实际上TableLayout和TableRow都是LineLayout线性布局的子类。且android:layout_width=MATCH_PARENT,android:layout_height=WRAP_CONTENT。所以TableRow实际是一个横向的线性布局,且所以子元素宽度和高度一致。
在TableLayout布局中,一列的宽度由该列中最宽的那个单元格指定,而该表格的宽度由父容器指定。可以为每一列设置以下属性:
Shrinkable 表示该列的宽度可以进行收缩,以使表格能够适应父容器的大小
Stretchable 表示该列的宽度可以进行拉伸,以使能够填满表格中的空闲空间
Collapsed 表示该列会被隐藏
4. 帧布局:
在帧布局中所有添加到这个布局中的视图都以层叠的方式显示。第一个添加的控件被放在最底层,最后一个添加到框架布局中的视图显示在最顶层,上一层的控件会覆盖下一层的控件。这种显示方式有些类似于堆栈。
5. 绝对布局:
一般情况下,在应用程序开发过程中很少使用到该布局,因为不同的终端设备屏幕尺寸都有所差别,通过设置绝对位置而控制各个控件的位置,在不同的设备上都会有不同的显示效果,所以说很难适配,即使你在自己的设备上显示效果非常好,但是换成其他设备,显示效果就不一定是这样了。故不推荐使用此布局。