为了适应各式各样的界面风格,Android系统提了6种布局,这6种布局分别是:
RelativeLayout(相对布局)
LinearLayout(线性布局)
TableLayout(表格布局)
AbsoluteLayout(绝对布局)
FrameLayout(框架布局)
GridLayout(网格布局)
下面Mark一下这几种布局的常用属性
1.RelativeLayout(相对布局)
//该组件位于引用组件的左方
android:layout_toLeftOf=”@id/usernameText2”
//该组件位于引用组件的右方
android:layout_toRightOf=”@id/usernameText2”
//该组件位于引用组件的上方
android:layout_above=”@id/usernameText2”
//该组件位于引用组件的下方
android:layout_below=”@id/usernameText2”
//相对于左方偏移的距离(如果本组件有layout_toRightOf属性,就是相对于左方组件的距离,没有的话,就是相对于父组件左边框的距离)
android:layout_marginLeft=”70dp”
//相对于右方偏移的距离
android:layout_marginRight=”70dp”
//相对于上方偏移的距离
android:layout_marginTop=”70dp”
//相对于下方偏移的距离
android:layout_marginBottom=”70dp”
//是否对齐父组件左端
android:layout_alignParentLeft=”true”
//是否对齐父组件右端
android:layout_alignParentRight=”true”
//是否对齐父组件上端
android:layout_alignParentTop=”true”
//是否对齐父组件下端
android:layout_alignParentBottom=”true”
//是否位于父组件正中
android:layout_centerInParent=”true”
//是否横向居中
android:layout_centerHorizontal=”true”
//是否纵向居中
android:layout_centerVertical=”true”
//当前控件的基准线对齐指定控件的基准线
android:layout_alignBaseline=”@id/usernameText2”
2.LinearLayout(线性布局)
一定要有android:orientation=”vertical”or”horizontal”
按照垂直或者水平的顺序依次排列子元素,每一个子元素都位于前一个元素之后。
(如果是垂直排列,那么将是一个N行单列的结构,每一行只会有一个元素,而不论这个元素的宽度为多少;如果是水平排列,那么将是一个单行N列的结构。
简言之:哪怕后面的显示不出来,也坚决不换行/不换列)
另:还可设置如下属性
android:gravity=”center_horizontal”or”center_vertical”
android:layout_weight=”1“(本属性用于描述当前元素在剩余空间(可能为负值)中占有的大小比例,android:layout_weight遵循数值越大,重要度越高的原则。详细说明可以参照这篇博文,android:layout_weight的真实含义
so:如果要让当前元素在某个方向按比例显示,最好先将该方向的高度or宽度设为0dp)
3.TableLayout(表格布局)
顾名思义,此布局为表格布局,适用于N行N列的布局格式。一个TableLayout由许多TableRow组成,一个TableRow就代表TableLayout中的一行。
TableRow是LinearLayout的子类,
它的android:orientation属性值恒为horizontal,
并且它的android:layout_width和android:layout_height属性值恒为match_parent和wrap_content。
所以它的子元素都是横向排列,并且宽高一致的。这样的设计使得每个TableRow里的子元素都相当于表格中的单元格一样。在TableRow中,单元格可以为空,但是不能跨列。
4.AbsoluteLayout(绝对布局)
通过android:layout_x=”xdp“和android:layout_y=”ydp”两个属性来确定组件的位置(均为相对于应用界面左上方原点的偏移量)
在此布局中的子元素可以相互重叠,在实际开发中,通常不采用此布局格式,因为它的界面代码过于刚性,以至于有可能不能很好的适配各种终端。
5.FrameLayout(帧布局)
是五大布局中最简单的一个布局,在这个布局中,整个界面被当成一块空白备用区域,所有的子元素都统统放于左上角,并且后面的子元素直接覆盖在前面的子元素之上,将前面的子元素部分或全部遮挡。
6.GridLayout(网格布局)
android 4.0 后新增的一个布局(所以要求最低API版本为14),与TableLayout(表格布局)其实有点大同小异;
1)跟LinearLayout(线性布局)一样,他可以设置容器中组件的对齐方式
2)容器中的组件可以跨多行也可以跨多列(相比TableLayout直接放组件,占一行相比较)
详细介绍android布局——GirdLayout(网格布局)详解
7.属性单位说明
dip device independent pixels(设备独立像素). 不同设备不同的显示效果,这个和设备硬件有关
dp (与密度无关的像素):同dip是一样的。
px pixels(像素) 屏幕上的点,不同设备不同的显示屏显示效果相同,这是绝对像素,是多少就永远是多少不会改变。
sp scaled pixels — best for text size (放大像素)(与刻度无关的像素):主要处理字体的大小