一、必备知识

相对布局的控件位置设置主要分为以下两种:

1、控件根据父布局来定位

属性名 描述 取值
android:layout_alighParentLeft 控件相对父布局左对齐 true或false
android:layout_alighParentRight 控件相对父布局右对齐 true或false
android:layout_alighParentTop 控件相对父布局上对齐 true或false
android:layout_alighParentBottom 控件相对父布局下对齐 true或false
android:layout_centerHorizontal 控件相对父布局水平居中 true或false
android:layout_centerVertical 控件相对父布局垂直居中 true或false
android:layout_centerInParent 控件相对父布局水平且垂直居中 true或false

2、控件根据兄弟控件来定位

属性名 描述 取值
android:layout_toLeftOf 控件在另一个控件左边 另一个控件的id
android:layout_toRightOf 控件在另一个控件右边 另一个控件的id
android:layout_above 控件在另一个控件上边 另一个控件的id
android:layout_below 控件在另一个控件下边 另一个控件的id
android:layout_alighTop 控件相对另一控件上对齐 另一个控件的id
android:layout_alighBottom 控件相对另一控件下对齐 另一个控件的id
android:layout_alighLeft 控件相对另一控件左对齐 另一个控件的id
android:layout_alighRight 控件相对另一控件右对齐 另一个控件的id

二、案例

1、案例分析

本案例效果图整体布局可以使用相对布局,内部可以解析成两部分内容,第一部分为正中心的按钮1与父布局四个角的按钮2、按钮3、按钮4、按钮5,第二部分为与正中心按钮1相邻四个角的按钮6、按钮7、按钮8、按钮9。
(1)为了方便找到每个按钮,我们会在. xml代码中给每个按钮加上一个android:id属性来区分不同的按钮。例如给按钮1加上id代码如下:

android:id= "@+id/btn1"

同理,给按钮2加上id值为btn2,... ,按钮9加上id值为btn9。

(2)按钮1想要设置成正中心位置,可以在其内部加上如下代码:

android:layout_centerInParent = "true"

(3)按钮2想要设置成整个界面左上角位置,可以在其内部加上如下代码:

android:layout_alignParentLeft= "true"
android:layout_alignParentRight = "true"

(4)按钮3想要设置成整个界面右上角位置,可以在其内部加上如下代码:

android:layout_alignParentRight = "true"
android:layout_alignParentTop= "true'

(5)按钮4想要设置成整个界面左下角位置,可以在其内部加上如下代码:

android:layout_alignParentLeft = "true"
android:layout_alignParentBottom= "true"

(6)按钮5想要设置成整个界面右下角位置,可以在其内部加上如下代码:

android:layout_alignParentRight= "true"
android:layout_alignParentBottom= "true"

(7)按钮6想要设置成按钮1相邻的左上角位置,可以在其内部加上如下代码:

android:layout_toLeftOf = "@id/btn1"
android:layout_above= "@id/btn1"

(8)按钮7想要设置成按钮1相邻的右上角位置,可以在其内部加上如下代码:

android:layout_toRightOf = "@id/btn1"
android:layout_above= "@id/btn1"

(9)按钮8想要设置成按钮1相邻的左下角位置,可以在其内部加上如下代码:

android:layout_toLeftOf = "@id/btn1"
android:layout_below= "@id/btn1"

(10)按钮9想要设置成按钮1相邻的右下角位置,可以在其内部加上如下代码:

android:layout_toRightOf = "@id/btn1"
android:layout_below = "@id/btn1"

2、案例实现

        在Iayout目录下新建线性布局layout_relative.xml文件,并修改MinAetivir.java中的onCreate()方法的语句为setContentView( R. layout. layout_ relative)。 案例布局的完整代码如下所示:

<?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"><Buttonandroid:id= "@+id/btn1"android:layout_width = "wrap_content"android:layout_height = "wrap_content"android:layout_centerInParent = "true"android:text= "按钮1"/><Buttonandroid:id= "@+id/btn2"android:layout_width= "wrap_content"android:layout_height = "wrap_content"android:layout_alignParentLeft = "true"android:layout_alignParentTop = "true"android:text = "按钮2"/><Buttonandroid:id= "@+id/btn3"android:layout_width = "wrap_content"android:layout_height = "wrap_content"android:layout_alignParentRight = "true"android:layout_alignParentTop= "true"android:text = "按钮3"/><Buttonandroid:id= "@+id/btn4"android:layout_width = "wrap_content"android:layout_height = "wrap_content"android:layout_alignParentLeft = "true"android:layout_alignParentBottom= "true"android:text = "按钮4"/><Buttonandroid:id= "@+id/btn5"android:layout_width = "wrap_content"android:layout_height = "wrap_content"android:layout_alignParentRight = "true"android:layout_alignParentBottom= "true"android:text = "按钮5"/><Buttonandroid:id= "@+id/btn6"android:layout_width = "wrap_content"android:layout_height = "wrap_content"android:layout_toLeftOf = "@id/btn1"android:layout_above = "@id/btn1"android:text= "按钮6"/><Buttonandroid:id= "@+id/btn7"android:layout_width = "wrap_content"android:layout_height = "wrap_content"android:layout_toRightOf = "@id/btn1"android:layout_above = "@id/btn1"android:text= "按钮7"/><Buttonandroid:id= "@+id/btn8"android:layout_width = "wrap_content"android:layout_height = "wrap_content"android:layout_toLeftOf = "@id/btn1"android:layout_below = "@id/btn1"android:text= "按钮8"/><Buttonandroid:id= "@+id/btn9"android:layout_width = "wrap_content"android:layout_height = "wrap_content"android:layout_toRightOf = "@id/btn1"android:layout_below = "@id/btn1"android:text= "按钮9"/></RelativeLayout>

其运行结果如下:

注意

android:xxxx、@+id/btn1、@id/btn1的冒号千万千万不要有空格,否则一直报错,改了一大片的辛酸血泪史!!!

所以在敲代码的时候最好不要空格,紧凑敲就行。

《物联网Android程序开发案例式教程》Demo2:相对布局相关推荐

  1. 《物联网Android程序开发案例式教程》Demo4:模拟进度条

    在日常的应用中,我们经常会下载App.文件等,此时,就需要进度条来提示我们下载进度.这一章将教大家如何模拟下载进度条效果. 本案例需要用到的控件有显示图片的ImageView. 进度条控件Progre ...

  2. Android程序开发0基础教程(一)

    程序猿学英语就上视觉英语网 Android程序开发0基础教程(一) 平台简单介绍 令人激动的Google手机操作系统平台-Android在2007年11月13日正式公布了,这是一个开放源码的操作系统, ...

  3. 《Android开发案例驱动教程》

    <Android开发案例驱动教程> 作者:关东升,赵志荣 Java或C++程序员转变成为Android程序员 采用案例驱动模式展开讲解知识点,即介绍案例->案例涉及技术->展开 ...

  4. 【Android】Android应用开发案例教程

    <Android应用开发案例教程(高等学校计算机科学与技术项目驱动案例实践规划教材)>应用"项目驱动(project-driven) "最新教学模式,通过完整的项目案例 ...

  5. C语言程序设计案例式教程

    C语言程序设计案例式教程 数据类型与运算符 变量的数据类型 :整形变量,实型变量,字符型变量,枚举类型变量: (单引号内只可以存放转义字符.一个字符) 数据类型 所占字符数 char 1个字节 int ...

  6. android 程序开发的插件化

    本文为 博客园 黑暗伯爵 原创,转载请注明  http://hangxin1940.cnblogs.com 原文地址:android 程序开发的插件化 模块化方法 之一 框架已经放出: android ...

  7. android布局管理器模仿qq登录效果,Android程序开发仿新版QQ锁屏下弹窗功能

    新版的qq,可以在锁屏下弹窗显示qq消息,正好目前在做的项目也需要这一功能.经过各种试验和资料查找,终于实现,过程不难,但是却有一些地方需要注意. 下面是实现过程. 1.使用Activity,而不是V ...

  8. 干洗店洗鞋店小程序开发案例

    今天给大家介绍的是一个洗衣店洗鞋店小程序开发案例 程序主要实现: 为洗衣客户提供高性价比洗衣服务,提供上门取送,让您的时间更充足. 用户填写衣物名称和件数.提货地点和时间平台即可自动分配专业人员上门取 ...

  9. VScode使用SSH连接Linux(Ubuntu)系统程序开发,详细教程

    VScode使用SSH连接Linux(Ubuntu)系统程序开发,详细教程 VScode使用SSH连接Linux(Ubuntu)系统程序开发 1.安装SSH 2.SSH连接远程服务器 3.远程编程开发 ...

  10. android程序开发教案,Android移动应用开发基础教程教案.doc

    教 案 课 程 名 称Android移动应用开发基础教程(微课版)课 程 代 码系(部)教研室(实验室)授 课 教 师职 称 年 月 课 程 名 称Android移动应用开发基础教程(微课版)总计: ...

最新文章

  1. 写到usaco上的一题可能题解是凸包所以转来这篇文章看看
  2. 【原创】分布式之缓存击穿 【原创】自己动手实现静态资源服务器 【原创】自己动手实现JDK动态代理...
  3. ad09机械层说明_悉数PCB上的各种层
  4. Oracle创建删除用户、角色、表空间、导入导出数据库命令行方式总结
  5. 【POJ - 2378】Tree Cutting(树形dp,树的重心变形)
  6. Laravel源码解析之QueryBuilder
  7. JUnit4套件测试
  8. 付出与收获对等的自然法则,执行力离开去做马上去做
  9. 按键精灵注册服务器,按键精灵网页注册脚本教程
  10. 小甲鱼 c语言 17课
  11. FreeSWITCH之默认端口
  12. jQ模拟下拉框以及向下三角
  13. 基于SSM的商城管理系统
  14. 关于IAP支付,谷歌和苹果订阅商品——最白话,手把手教你做系列。
  15. AutoJs学习-实现自动加群成员好友
  16. GPS传感器数据帧格式
  17. matplotlib中cmap与color参数的设置
  18. win10应用商店闪退及应用商店相关小程序打不开解决办法
  19. 编译基于obs-studio的阿里巴巴直播工具tblive的过程和常见问题解决
  20. TensorFlow2.0--Chapter01环境搭建

热门文章

  1. MySQL入门:如何创建数据库?
  2. 十代主板改win7_10代cpu装win7系统及bios设置教程(完美支持10代驱动)
  3. vue,微信小程序,插件库,前端框架,PPT,工具,源码等学习网站
  4. Mstar的Monitor方案笔记(五)——Gamma
  5. 船载电子海图系统(E C S )概述
  6. oracle中聚合比较函数,Oracle 分析函数与聚合函数区别
  7. 微信小程序架构图与开发
  8. 网站/APP 流量分析、用户访问分析
  9. h5小游戏构建架设h5棋牌平台开发制作
  10. python内存注入代码,python语言编写的DLL注入工具