说明:RelativeLayout是目前android开发中最最常用的布局管理器(比LinearLayout还常用),布局内的子组件的位置总是相互依照其他子组件和RelativeLayout布局本身来确定的。这样最大的好处就是更加自由灵活,可以设计出更加炫酷复杂的界面,而且可以在IDE中通过直接拖拽来进行界面的布局设计。
注意:RelativeLayout的子组件不可以设置android:layout_gravity属性。

RelativeLayout中需要关注的属性就比较多了,大概可以分为三类:

1 android:ignoreGravity

对应方法:setIgnoreGravity(int)
说明:设置不受gravity属性影响的子组件。跟其他布局一样,Realtivelayout也可以使用android:gravity属性来设置其子组件的摆放位置,但RelativeLayout需要实现更加复杂的布局,所以为所有组件设置统一的摆放方式难以满足实际开发中的一些特殊需求,于是就有了这个属相来进行特殊的忽略。
举个栗子:

        

Android UI之RelativeLayout(相对布局)_第1张图片

可以看到,由于RelativeLayout中设置了gravity为bottom,所以第二个ImageView被摆放到了布局的底部,而ignoreGravity中设置了的view1就依然是我行我素地从左上角开始摆放。

2 只能设置为true、false的xml属性

说明:这一类属性主要是为了弥补RelativeLayout子组件不能设置layout_gravity属性的遗憾,可以直接为子组件指定摆放位置。

以下是这类属性的属性表:

属性名 功能说明
android:layout_centerHoriazontal 控制该子组件是否相对于父容器水平居中
android:layout_centerVertical 控制该子组件是否相对于父容器垂直居中
android:layout_centerInParent 控制该子组件是否相对于父容器居中
android:layout_alignParentBottom 控制该子组件是否与父容器底端对齐
android:layout_alignParentTop 控制该子组件是否与父容器顶端对齐
android:layout_alignParentLeft 控制该子组件是否与父容器左端对齐
android:layout_alignParentRight 控制该子组件是否与父容器右端对齐
android:layout_alignParentEnd 控制该子组件是否与父容器结束对齐(右上角)
android:layout_alignParentStart 控制该子组件是否与父容器开始对齐(左上角)

需要注意的是,这些属相是可以同时使用的,不过如果同时使用相互冲突的属性(比如layout_alignParentLeft和layout_alignParentRight)会产生一些比较古怪的效果,所以不建议同时使用有冲突的属性。

    

Android UI之RelativeLayout(相对布局)_第2张图片
系统会努力去适应所有的属性,导致组件被拉伸成很古怪的样子。

3 只能设置为其他UI组件ID的xml属性

说明:这些属相就是RelativeLayout的核心属性,就是通过这些属性,来确定各个子组件在布局方面的相互关系的。
以下是这类属性的属性表:

属性名 功能说明
android:layout_toRightOf 控制该子组件位于ID指定组件的右侧
android:layout_toLeftOf 控制该子组件位于ID指定组件的左侧
android:layout_above 控制该子组件位于ID指定组件的上方
android:layout_below 控制该子组件位于ID指定组件的下方
android:layout_alignTop 控制该组件顶端与ID指定组件的上边界对齐
android:layout_alignBottom 控制该底端组件与ID指定组件的下边界对齐
android:layout_alignLeft 控制该组件左端与ID指定组件的左边界对齐
android:layout_alignRight 控制该组件右端与ID指定组件的右边界对齐
android:layout_alignStart 控制该组件起始位置与ID指定组件的起始位置对齐(左上角)
android:layout_alignEnd 控制该组件结束位置与ID指定组件的结束位置对齐(右上角)

另外可以使用margin或padding对组件进行细微的调整,如下所示:

             

Android UI之RelativeLayout(相对布局)_第3张图片

附:引用声明

《疯狂Android讲义(第二版)》 李刚 《2.2.4 相对布局》 电子工业出版社

更多相关文章

  1. Android Layout布局文件里的android:layout_height等属性为什么.
  2. Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流
  3. Flutter布局中嵌入Android原生组件 - 全景图组件封装
  4. android的ImageView中XML属性src和background的区别
  5. Android布局之LinearLayout weight属性的理解
  6. Android组件及UI框架大全

随机推荐

  1. Unity与Android(Android(安卓)Studio)交互
  2. Android(安卓)常用 adb 命令总结
  3. Android(安卓)NDK之一:什么是NDK?
  4. 如何在Android上安装apk软件
  5. Android(安卓)Browser 支持屏蔽webaudio
  6. Android(安卓)FrameWork Service 之 Stat
  7. Android平板电脑上的APP应用程序设计须知
  8. android的adb常用命令使用
  9. Android锁定横屏、竖屏和去标题栏、全屏
  10. Android空间EditText的InputType属性