RelativeLayout相对布局

  RelativeLayout是一种相对布局,控件的位置是按照相对位置来计算的,后一个控件在什么位置依赖于前一个控件的基本位置,是布局最常用,也是最灵活的一种布局。

  

  我们下面通过XML布局和Java代码布局两种方式分别举例:

一、XML方式布局

  1、创建一个空白Activity

  

  2、打开“res/layout/activity_main.xml”文件,修改成以下代码。

  

  (1)第①部分

  <?xml version=”1.0” encoding=”utf-8”>,每个XML文档都由XML序言开始,在前面的代码中的第一行便是XML序言,<?xml version=”1.0”>。这行代码表示按照1.0版本的XML规则进行解析。encoding = “utf-8”表示此xml文件采用utf-8的编码格式。编码格式也可以是GB2312。

  如果你对此不太明白,请参阅相关XML文档。

  (2)第②部分

  <RelativeLayout…… 表示采用相对布局管理器。

  (3)第③部分

  android:layout_width=”match_parent” android:layout_height=”match_parent”表示布局管理器宽度和高充将填充整个屏幕宽度和高度。

  3、插入三个按钮。

  插入三个按钮,并分别设置其文本为:“第一个按钮”、“第二个按钮”、“第三个按钮”。

  

  我们下一步设置第一个按钮距离左边、上边各20dp,第二个按钮距离第一个按钮左边、上边各10dp;第三个按钮距离第二个按钮上边10dp,与第二个按钮左边对齐。

  4、打开“res/layout/activity_main.xml”文件,修改成以下代码。

  

  (1)第①部分

  设置第一个按钮,以父元素为基准,贴紧左上,距离20dp。  

[java] view plaincopyprint?
  1. <Button
  2. android:id=”@+id/button1”
  3. android:layout_width=”wrap_content”                //宽度匹配内容
  4. android:layout_height=”wrap_content”               //高度匹配内容  
  5. android:layout_alignParentLeft=”true”                         //贴紧父元素左边
  6. android:layout_alignParentTop=”true”               //贴紧父元素上边 
  7. android:layout_marginLeft=”20dp”                              //设置左间距20dp
  8. android:layout_marginTop=”20dp”                               //设置上间距20dp
  9. android:text=”第一个按钮” />
 <Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"                //宽度匹配内容android:layout_height="wrap_content"               //高度匹配内容  android:layout_alignParentLeft="true"                         //贴紧父元素左边android:layout_alignParentTop="true"               //贴紧父元素上边 android:layout_marginLeft="20dp"                              //设置左间距20dpandroid:layout_marginTop="20dp"                               //设置上间距20dpandroid:text="第一个按钮" />

  (2)第②部分

  设置第二个按钮,以第一个按钮为基准,在第一个按钮下面,对齐第一个按钮的右边,上距离15dp。

[html] view plaincopyprint?
  1. <Button
  2. android:id=“@+id/button2”
  3. android:layout_width=“wrap_content”              //宽度匹配内容
  4. android:layout_height=“wrap_content”              //高度匹配内容
  5. android:layout_below=“@+id/button1”              //位置在第一个按钮的下面
  6. android:layout_toRightOf=“@+id/button1”            //与第一个按钮的右边对齐
  7. android:layout_marginTop=“15dp”                            //设置上间距15dp
  8.      android:text=“第二个按钮” />
<Buttonandroid:id="@+id/button2"android:layout_width="wrap_content"              //宽度匹配内容android:layout_height="wrap_content"              //高度匹配内容android:layout_below="@+id/button1"              //位置在第一个按钮的下面android:layout_toRightOf="@+id/button1"            //与第一个按钮的右边对齐android:layout_marginTop="15dp"                            //设置上间距15dpandroid:text="第二个按钮" />

  (3)第③部分  

  设置第三个按钮,以第二个按钮为基准,在第二个按钮下面,对齐第二个按钮的左边,距离15dp。

[html] view plaincopyprint?
  1. <Button
  2. android:id=“@+id/button3”
  3. android:layout_width=“wrap_content”              //宽度匹配内容
  4. android:layout_height=“wrap_content”              //高度匹配内容
  5. android:layout_below=“@+id/button2”              //位置在第二个按钮的下面
  6. android:layout_toLeftOf=“@+id/button2”            //与第二个按钮的左边对齐
  7. android:layout_marginTop=“15dp”                //设置上间距15dp
  8. android:text=“第三个按钮” />
    <Buttonandroid:id="@+id/button3"android:layout_width="wrap_content"              //宽度匹配内容android:layout_height="wrap_content"              //高度匹配内容android:layout_below="@+id/button2"              //位置在第二个按钮的下面android:layout_toLeftOf="@+id/button2"            //与第二个按钮的左边对齐android:layout_marginTop="15dp"                //设置上间距15dp        android:text="第三个按钮" />

  最终显示效果如下:

  

  附:相对布局常用属性介绍

  这里将这些属性分成组,便于理解和记忆。
  a)、第一类:属性值为true或false
  android:layout_centerHrizontal 水平居中
  android:layout_centerVertical 垂直居中
  android:layout_centerInparent 相对于父元素完全居中
  android:layout_alignParentBottom 贴紧父元素的下边缘
  android:layout_alignParentLeft 贴紧父元素的左边缘
  android:layout_alignParentRight 贴紧父元素的右边缘
  android:layout_alignParentTop 贴紧父元素的上边缘  

  b)、第二类:属性值必须为id的引用名“@id/id-name”
  android:layout_below 在某元素的下方
  android:layout_above 在某元素的的上方
  android:layout_toLeftOf 在某元素的左边
  android:layout_toRightOf 在某元素的右边
  android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐
  android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐
  android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐
  android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐

  c)、第三类:属性值为具体的像素值,如30dip,40px
  android:layout_marginBottom 离某元素底边缘的距离
  android:layout_marginLeft 离某元素左边缘的距离
  android:layout_marginRight 离某元素右边缘的距离
  android:layout_marginTop 离某元素上边缘的距离

  可以通过组合这些属性来实现各种各样的布局。

 

            </div>

RelativeLayout里各个控件的相对位置相关推荐

  1. 【Qt】实现在窗口缩放时控件维持相对位置

    文章目录 01. 背景 02. 解决方案 03. 位置和大小的计算 03.1. 控件宽度或高度始终与窗体一致 03.2. 控件左右居中 03.3. 控件上下居中 03.4. 控件位于窗体右上角 03. ...

  2. JS 获取控件的绝对位置

    JS 获取控件的绝对位置 js获取控件的绝对位置 已经控件宽度和高度 2010-08-11 13:07 //获取控件左绝对位置 function getAbsoluteLeft(objectId) { ...

  3. Visual C++——获取屏幕大小、窗口大小、对话框大小和位置、控件大小和位置

    解决方案 获取屏幕大小 //下边两个函数获取的是显示屏幕的大小,但不包括任务栏等区域int cx = GetSystemMetrics(SM_CXFULLSCREEN); int cy = GetSy ...

  4. appim自动化--点击指定控件的指定位置

    终于有意识的把代码块封装起来了,首次给自个赞个:) 点击指定控件的指定位置,要用到枚举-- package appiumtest; import java.net.URL;import io.appi ...

  5. mfc中在vector里添加控件类型的数据时出现C2248错误

    @mfc中在vector里添加控件类型的数据时出现C2248错误 这是我在.h文件中定义的2个容器 public:vector<CComboBox*> cbx;vector <CSt ...

  6. silverlight 得到 控件 鼠标 的位置

    //控件的绝对位置 TreeView tr = (TreeView)sender; GeneralTransform generalTransform = tr.TransformToVisual(n ...

  7. c#里什么控件可以播放视频(avi)?怎么实现

    Q: c#里什么控件可以播放视频(avi)?怎么实现 A: DirectShow MediaPlayer in C# 参考http://www.codeproject.com/cs/media/dir ...

  8. qt获取窗口的右上角位置_如何获得 Qt窗口部件在主窗口中的位置--确定鼠标是否在某一控件上与在控件上的位置...

    用Qt Creator 设计程序时,最方便的就是ui设计器,可以很容易的得到想要的布局. 但是这样自动布局带来的后果是很难知道窗口中某一部件在主窗口中的相对位置. 在处理子窗口鼠标事件时变的很麻烦.主 ...

  9. 在RelativeLayout中对控件的显示隐藏操作问题

    2019独角兽企业重金招聘Python工程师标准>>> 通常我们通过java代码控制布局中,某个控件的显示与隐藏会用: progressBar_video_format.setVis ...

最新文章

  1. 敏捷过程、极限编程和SCRUM的关系
  2. 如何解决机器学习中数据不平衡问题
  3. 【转载】dirs、pushd、popd指令
  4. 流与文件 java_java流与文件处理,请看代码:
  5. jquery 获取id最大的元素_超全整理!JQuery中的选择器集合
  6. 弹出框 背景固定 滑动
  7. Android开发笔记(三十五)页面布局视图
  8. c语言合法自定义标识符_c语言合法标识符的要求是什么
  9. node爬取守望先锋图片
  10. 宾州州立大学计算机排名,宾州州立大学帕克分校排名
  11. cydia添加源程序 v1.1.6 中文版
  12. 天涯上令人肝肠寸断的100个签名
  13. 张三吃饭——竟吃出了HTTP中GET和POST的区别?
  14. springboot班级同学录网站
  15. angular学习笔记(十四)-$watch(3)
  16. AT对峙,不止百度出局那么简单
  17. 第一次作业——————打印沙漏
  18. 基于密度的聚类算法(3)——DPC详解
  19. 《贝佐斯的数字帝国》读书笔记
  20. JavaScript 59 JavaScript 常见错误

热门文章

  1. 支付宝不用网络,也能正常支付,太神奇了吧!
  2. mysql 双机 热备,MySQL双机热备方案
  3. php 纯英文单词数,推荐几个在线测试英语单词量的网站
  4. centos7禁用scp
  5. 【专访间】数据堂共同创始人肖永红:大数据促进云落地
  6. YOLO V5 改进详解
  7. 怎样用MATLAB打开excel文件
  8. 仿QQ侧滑菜单(二)
  9. 图像处理就业(转)-----本人研究生正攻读本方向,不得不看看
  10. pg_cron PostgreSQL的定时任务插件