RelativeLayout

RelativeLayout:A Layout where the positions of the children can be described in relation to each other or to the parent.

相对布局:子控件的位置可以相对于其他子控件或者父控件描述的布局

当我们创建一个新的工程时,系统默认给我们创建的一个布局就是RelativeLayout(相对布局),这足以说明相对布局的重要性。相对布局和LinearLayout,FrameLayout相比较来说,性能不是最好的,但是他可以大大减少布局的结构层次,从而达到优化布局的效果。

 

上图的布局是个典型的相对布局,如果你用线性布局的话,一个布局估计是做不到的,这时候你需要线性布局嵌套线性布局,这样就增加了布局的层次,从而消耗了性能。

既然是相对布局,那么它又相对于什么布局呢?当然只能是它的父控件或其他子控件布局。


1.相对于父布局

android:layout_centerVertical="true"//设置是否相对于父布局垂直居中

android:layout_centerHorizontal="true"//设置是否相对于父布局水平居中

android:layout_centerInParent="true"//设置是否相对于父布局居中(水平和垂直都有)

android:layout_alignParentTop="true"//设置是否紧贴父布局的顶部,即设置在父布局的顶部

android:layout_alignParentBottom="true"//设置是否紧贴父布局的底部,即设置在父布局的底部

android:layout_alignParentRight="true"//设置是否紧贴父布局的右侧,即设置在父布局的右侧

android:layout_alignParentLeft="true"//设置是否紧贴父布局的左侧,即设置在父布局的左侧

适配Api17的RTL布局:这里有RTL布局的详细说明

android:layout_alignParentStart="true"//设置是否紧贴父布局开始的位置

android:layout_alignParentEnd="true"//设置是否紧贴父布局结束的位置


2.相对于其他的子控件

android:layout_above="@+id/xxx"//位于某个id的控件的上方

android:layout_below="@+id/xxx"//位于某个id的控件的下方

android:layout_toLeftOf="@+id/xxx"//位于某个id的控件的左侧

android:layout_toRightOf="@+id/xxx"//位于某个id的控件的右侧

android:layout_alignTop="@+id/xxx"//设置和某个id的控件的上方位于一条线上

android:layout_alignBottom="@+id/xxx"//设置和某个id的控件的下方位于一条线上

android:layout_alignLeft="@+id/xxx"//设置和某个id的控件的左侧位于一条线上

android:layout_alignRight="@+id/xxx"//设置和某个id的控件的右侧位于一条线上

适配Api17的RTL布局:

android:layout_toStartOf="@+id/xxx"//设置位于某个id控件的开始位置

android:layout_toEndOf="@+id/xxx"//设置位于某个id控件的结束位置

android:layout_alignStart="@+id/xxx"//设置和某个id的控件的开始位置位于一条线上

android:layout_alignEnd="@+id/xxx" //设置和某个id的控件的结束位置位于一条线上


3.其他属性

android:layout_alignWithParentIfMissing="true"// 如果找不到其他子控件,就相对于父控件布局

是不是觉得每个子控件都要设置属性很麻烦?

在RelativeLayout中也有:

android:gravity="center_horizontal|bottom"//设置内部子控件的显示位置,居中,上下左右都可以

当然它还提供了一个方法,如果你不想某个子控件不受RelativeLayout的控制:

android:ignoreGravity="@id/xxx"//传入子控件的id

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值