Android学习笔记十四之RelativeLayout相对布局
跟前面介绍的LinearLayout线性布局一样,RelativeLayout相对布局也是我们常用的布局之一,但是,不同于LinearLayout线性布局,RelativeLayout中控件的排列方式都是相对的。下面我们介绍一下RelativeLayout相对布局的常用属性:
1、根据父布局定位
- 左对齐:android:layout_alighParentLeft
- 右对齐:android:layout_alighParentRight
- 顶端对齐:android:layout_alighParentTop
- 底部对齐:android:layout_alighParentBottom
- 水平居中:android:layout_centerHorizontal
- 垂直居中:android:layout_centerVertical
- 中央位置:android:layout_centerInParent
这里说的相对定位都是相对于父布局来讲的。
2、根据同一父布局内的其他组件定位
- 左边:android:layout_toLeftOf
- 右边:android:layout_toRightOf
- 上方:android:layout_above
- 下方:android:layout_below
- 对齐上边界:android:layout_alignTop
- 对齐下边界:android:layout_alignBottom
- 对齐左边界:android:layout_alignLeft
- 对齐右边界:android:layout_alignRight
3、设置组件与父布局的边距
- android:layout_margin: 设置控件的四个方向与外部的距离,依次是上、左、下、右
- android:layout_marginLeft: 设置控件的左边与外部的距离
- android:layout_marginTop: 设置控件的顶部与外部的距离
- android:layout_marginRight: 设置控件的右边与外部的距离
- android:layout_marginBottom: 设置控件的下方与外部的距离
4、设置组件内容与组件的距离
- android:padding :设定控件内部留出的边距
- android:paddingLeft: 设定控件的左边的内部留出的边距
- android:paddingTop: 设定控件的上边的内部留出的边距
- android:paddingRight: 设定控件的右边的内部留出的边距
- android:paddingBottom: 设定控件的下边的内部留出的边距
以上就是RelativeLayout的常用属性,我们利用这些属性可以设计出很复杂的界面,例如下面的例子:
布局文件代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="200dp">
<TextView
android:id="@+id/tv_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="实现梅花布局"
android:textSize="18sp" />
<Button
android:id="@+id/btn_001"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="中心" />
<Button
android:id="@+id/btn_002"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@id/btn_001"
android:layout_centerHorizontal="true"
android:text="上方" />
<Button
android:id="@+id/btn_003"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toLeftOf="@id/btn_001"
android:text="左边" />
<Button
android:id="@+id/btn_004"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/btn_001"
android:layout_centerHorizontal="true"
android:text="下方" />
<Button
android:id="@+id/btn_005"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toRightOf="@id/btn_001"
android:text="右边" />
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="200dp">
<Button
android:id="@+id/btn_006"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:padding="20dp"
android:text="中心" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@id/btn_006"
android:layout_centerHorizontal="true"
android:paddingTop="20dp"
android:text="上方" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toLeftOf="@id/btn_006"
android:paddingLeft="40dp"
android:text="左边" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/btn_006"
android:layout_centerHorizontal="true"
android:paddingBottom="20dp"
android:text="下方" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toRightOf="@id/btn_006"
android:paddingRight="40dp"
android:text="右边" />
</RelativeLayout>
</LinearLayout>
效果图:
如图所示是实现梅花布局的,上方图是没有设置padding属性的,下方的是设置了padding属性的,关于RelativeLayout相对布局就简单介绍到这里,利用布局嵌套我们可以实现比较复杂的界面布局,下一节,我们介绍TabLayout表格布局。
附上RelativeLayout的国内镜像API,本例子的Demo比较简单,就不上传代码了。