前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >六大布局之RelativeLayout

六大布局之RelativeLayout

作者头像
下码看花
发布2019-09-02 16:57:01
6550
发布2019-09-02 16:57:01
举报
文章被收录于专栏:AndroidStudio初识AndroidStudio初识
前言

上一期我们给大家讲解了FrameLayout的使用,这一期我们为大家讲解一下RelativeLayout(相对布局)的使用,RelativeLayout是Android的六大布局之一,也是我们常用的布局之一,下面我们一起开始学习吧~

简介

相对布局 RelativeLayout 允许子元素指定它们相对于其父元素或兄弟元素的位置,这是实际布局中最常用的布局方式之一。相对布局和LinearLayout,FrameLayout相比较来说,性能不是最好的,但是它可以大大减少布局的结构层次,从而达到优化布局的效果,它的灵活性大很多,当然属性也多,属性之间产生冲突的的可能性也大,使用相对布局时要多做些测试。

常用属性
代码语言:javascript
复制
第一类:属性值为true或false
//居中
android:layout_centerHrizontal="true" //水平居中
android:layout_centerVertical="true" //垂直居中
android:layout_centerInparent="true" //相对于父元素完全居中
//相对于父组件
android:layout_alignParentBottom="true" //贴紧父元素的下边缘
android:layout_alignParentLeft="true" //贴紧父元素的左边缘
android:layout_alignParentRight="true" //贴紧父元素的右边缘
android:layout_alignParentTop="true" //贴紧父元素的上边缘
代码示范
代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="10dp"
    android:orientation="vertical">

    <!-- 相对于父布局左边缘位置 -->
    <Button
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_alignParentLeft="true"
        android:background="@color/colorPrimary"
        android:text="左上角"
        android:textColor="#FFFFFF" />

    <!-- 相对于父布局右边缘位置 -->
    <Button
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_alignParentRight="true"
        android:background="@color/colorPrimary"
        android:text="右上角"
        android:textColor="#FFFFFF" />

    <!-- 相对于父布局左下角位置 -->
    <Button
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentBottom="true"
        android:background="@color/colorPrimary"
        android:text="左下角"
        android:textColor="#FFFFFF" />

    <!-- 相对父布局右下角位置 -->
    <Button
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="true"
        android:background="@color/colorPrimary"
        android:text="右下角"
        android:textColor="#FFFFFF" />

    <!-- 相对父布局中间居中位置 -->
    <Button
        android:id="@+id/center"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_centerInParent="true"
        android:background="@color/colorPrimary"
        android:text="中间居中"
        android:textColor="#FFFFFF" />

    <!-- 相对父布局垂直居中位置 -->
    <Button
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_centerVertical="true"
        android:background="@color/colorPrimary"
        android:text="垂直居中"
        android:textColor="#FFFFFF" />

    <!-- 相对父布局水平居中位置 -->
    <Button
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_centerHorizontal="true"
        android:background="@color/colorPrimary"
        android:text="水平居中"
        android:textColor="#FFFFFF" />

</RelativeLayout>
运行效果图
代码语言:javascript
复制
第二类:属性值必须为id的引用名“@id/id-name”
//相对于给定ID控件
android:layout_below="@id/xxx" //在某元素的下方
android:layout_above="@id/xxx" //在某元素的的上方
android:layout_toLeftOf="@id/xxx" //在某元素的左边
android:layout_toRightOf="@id/xxx" //在某元素的右边

android:layout_alignTop="@id/xxx" //本元素的上边缘和某元素的的上边缘对齐
android:layout_alignLeft="@id/xxx" //本元素的左边缘和某元素的的左边缘对齐
android:layout_alignBottom="@id/xxx" //本元素的下边缘和某元素的的下边缘对齐
android:layout_alignRight="@id/xxx" //本元素的右边缘和某元素的的右边缘对齐
代码语言:javascript
复制
第三类:属性值为具体的像素值,如30dp,40px
//指定移动像素
android:layout_marginBottom="30dp" //离某元素底边缘的距离
android:layout_marginLeft="30dp" //离某元素左边缘的距离
android:layout_marginRight="30dp" //离某元素右边缘的距离
android:layout_marginTop="30dp" //离某元素上边缘的距离
代码语言:javascript
复制
第四类:其它属性
android:gravity="center_horizontal|bottom"//设置内部子控件的显示位置,居中,上下左右都可以
android:layout_alignParentStart="true"//设置是否紧贴父布局开始的位置
android:layout_alignParentEnd="true"//设置是否紧贴父布局结束的位置
android:layout_toStartOf="@+id/xxx"//设置位于某个id控件的开始位置
android:layout_toEndOf="@+id/xxx"//设置位于某个id控件的结束位置
android:layout_alignStart="@+id/xxx"//设置和某个id的控件的开始位置位于一条线上
android:layout_alignEnd="@+id/xxx" //设置和某个id的控件的结束位置位于一条线上
android:layout_alignWithParentIfMissing="true"// 如果找不到其他子控件,就相对于父控件布局
android:ignoreGravity="@id/xxx"//传入子控件的id
代码示范
代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="10dp">

    <Button
        android:id="@+id/left_top"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_marginTop="50dp"
        android:background="@color/colorPrimary"
        android:text="程序员"
        android:textColor="#FFFFFF" />

    <!-- 本元素在left_top元素的右边 -->
    <Button
        android:id="@+id/right_top"
        android:layout_width="120dp"
        android:layout_height="60dp"
        android:layout_alignTop="@id/left_top"
        android:layout_marginLeft="10dp"
        android:layout_toRightOf="@+id/left_top"
        android:background="@color/colorPrimary"
        android:text="程序员鼓励师"
        android:textColor="#FFFFFF" />

    <Button
        android:id="@+id/left_bottom"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="50dp"
        android:background="@color/colorPrimary"
        android:text="程序员"
        android:textColor="#FFFFFF" />

    <!-- 本元素在left_bottom元素的左边 -->
    <Button
        android:layout_width="120dp"
        android:layout_height="60dp"
        android:layout_alignTop="@id/left_bottom"
        android:layout_marginRight="10dp"
        android:layout_toLeftOf="@id/left_bottom"
        android:background="@color/colorPrimary"
        android:text="UI设计师"
        android:textColor="#FFFFFF" />

    <!-- 中间居中 -->
    <Button
        android:id="@+id/center"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_centerInParent="true"
        android:background="@color/colorPrimary"
        android:text="中间"
        android:textColor="#FFFFFF" />

    <!-- 本元素在center元素的上方 -->
    <Button
        android:id="@+id/top"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_above="@id/center"
        android:layout_alignLeft="@id/center"
        android:layout_marginBottom="10dp"
        android:background="@color/colorPrimary"
        android:text="上"
        android:textColor="#FFFFFF" />

    <!-- 本元素在center元素的下方 -->
    <Button
        android:id="@+id/buttom"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_below="@id/center"
        android:layout_centerInParent="true"
        android:layout_marginTop="10dp"
        android:background="@color/colorPrimary"
        android:text="下"
        android:textColor="#FFFFFF" />

    <!-- 本元素在center元素的左方 -->
    <Button
        android:id="@+id/left"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_alignTop="@id/center"
        android:layout_marginRight="10dp"
        android:layout_toLeftOf="@id/center"
        android:background="@color/colorPrimary"
        android:text="左"
        android:textColor="#FFFFFF" />

    <!-- 本元素在center元素的右方 -->
    <Button
        android:id="@+id/right"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_alignTop="@id/center"
        android:layout_marginLeft="10dp"
        android:layout_toRightOf="@id/center"
        android:background="@color/colorPrimary"
        android:text="右"
        android:textColor="#FFFFFF" />

</RelativeLayout>
运行效果图
结语

相对布局核心是参照物,比起线性布局各有千秋,线性布局比较适合所有控件都是整齐排列的页面,相对布局比较随意一点,可以按照自己的想法来放置控件的位置。但是相对布局的写起来比较麻烦一点,需要自己考虑好所有控件的的布局。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 下码看花 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 简介
  • 常用属性
    • 代码示范
      • 运行效果图
        • 代码示范
          • 运行效果图
          • 结语
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档