昨天,我们对LinearLayout这种布局方式进行了初步的总结,大家可能会发现,LinearLayout这种布局方式有它的优点,例如你不需要对他进行换行处理,它会按照次序的不同而以顺序排序方式进行显示。但是在大多数情况下,我们需要对Activity中的布局进行自定义的安排,这时候还是可以用LinearLayout,这一部分可能需要用到多个Layout的嵌套技巧,很显然这种方式略显繁琐,对于程序开发来说,要做出相同的效果,使用的步骤越简单越好,这符合软件工程中的思想 Write Less, Do More.
下面我们提供一种相对布局的方式来进行调节空间的布局,对于有过WEB开发或者Java GUI编程的同学来说,学习起来是相当方便的。因为Android也采用的著名的盒子模型,所谓的盒子模型我用一张图片做一下说明:
相对布局的基本概念 一个控件的位置它决定于它和其他控件的关系。
那么如何控制相对的位置关系呢?
Android的帮助文档中中给出了非常详细的说明,下面我对常用的布局属性进行列举,并写出例子来进行说明:
// 相对于给定ID控件(此处需要制定相对控件的ID值 @id/)
android:layout_above 将该控件的底部置于给定ID的控件之上;
android:layout_below 将该控件的底部置于给定ID的控件之下;
android:layout_toLeftOf 将该控件的右边缘与给定ID的控件左边缘对齐;
android:layout_toRightOf 将该控件的左边缘与给定ID的控件右边缘对齐;
android:layout_alignBaseline 将该控件的baseline与给定ID的baseline对齐;
android:layout_alignTop 将该控件的顶部边缘与给定ID的顶部边缘对齐;
android:layout_alignBottom 将该控件的底部边缘与给定ID的底部边缘对齐;
android:layout_alignLeft 将该控件的左边缘与给定ID的左边缘对齐;
android:layout_alignRight 将该控件的右边缘与给定ID的右边缘对齐;// 相对于父组件
android:layout_alignParentTop 如果为true,将该控件的顶部与其父控件的顶部对齐;
android:layout_alignParentBottom 如果为true,将该控件的底部与其父控件的底部对齐;
android:layout_alignParentLeft 如果为true,将该控件的左部与其父控件的左部对齐;
android:layout_alignParentRight 如果为true,将该控件的右部与其父控件的右部对齐;// 居中
android:layout_centerHorizontal 如果为true,将该控件的置于水平居中;
android:layout_centerVertical 如果为true,将该控件的置于垂直居中;
android:layout_centerInParent 如果为true,将该控件的置于父控件的中央;// 指定移动像素
android:layout_marginTop 上偏移的值;
android:layout_marginBottom 下偏移的值;
android:layout_marginLeft 左偏移的值;
android:layout_marginRight 右偏移的值; android:id --- 为控件指定相应的ID
android:text --- 指定控件当中显示的文字,需要注意的是,这里尽量使用strings.xml文件当中的字符串
android:grivity --- 指定控件的基本位置,比如说居中,居右等位置这里指的是控件中的文本位置并不是控件本身。
android:textSize --- 指定控件当中字体的大小
android:background --- 指定该控件所使用的背景色,RGB命名法
android:width --- 指定控件的宽度
android:height --- 指定控件的高度
android:padding* --- 指定控件的内边距,也就是说控件当中的内容
android:sigleLine --- 如果设置为真的话,则控件的内容在同一行中进行显示
示例1:将控件A放置在控件B的上面,则使用android:layout_above:layout_above属性,控件布局的效果可以有以下这么两种情况。
1、 控件A与控件B对齐,并且控件A是在控件B的上面。 2、 控件A没有与控件B对齐,但是控件A又确实是在控件B的上面。
示例2:在示例1的基础上,设置控件A放置在控件B的上面,使用android:layout_above属性,并且控件A的左边边缘与控件B的左边边缘对齐,使用android:layout_alignLeft属性。
例子非常简单,大家可以自己尝试一下,在原版本的Eclipse中默认使用的LinearLayout的布局方式,最新版本的Eclipse中则使用RelativeLayout的布局方式,这也体现出设计需求也在向灵活度来进行靠拢,通过相对布局我们可以更加方便的进行位置移动,虽然掌握起来有点难度,但是当你学完之后会节省很多时间,这就是磨刀不误砍柴功的道理。