【Android】相对布局(RelativeLayout)最全解析

2023-11-18

一、相对布局(RelativeLayout)概述

相对布局(RelativeLayout)是一种根据父容器和兄弟控件作为参照来确定控件位置的布局方式。
在这里插入图片描述

使用相对布局,需要将布局节点改成RelativeLayout,基本格式如下:

 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
 ....
    
</RelativeLayout>

二、根据父容器定位

在相对布局中,可以通过以下的属性让的组合让控件处于父容器左上角、右上角、左下角、右下角、上下左右居中,正居中等九个位置。属性如下:

  • android:layout_alignParentLeft="true" 父容器左边
  • android:layout_alignParentRight="true" 父容器右边
  • android:layout_alignParentTop="true" 父容器顶部
  • android:layout_alignParentBottom="true" 父容器底部
  • android:layout_centerHorizontal="true" 水平方向居中
  • android:layout_centerVertical="true" 垂直方向居中
  • android:layout_centerInParent="true" 水平垂直都居中
    在这里插入图片描述
    举例:给一个控件添加 android:layout_alignParentRight="true" 和- android:layout_alignParentTop="true" 属性后该控件处于父容器右上角在这里插入图片描述

给一个控件添加 android:layout_alignParentLeft="true"android:layout_centerVertical="true" 属性后该控件处于父容器左边垂直居中位置
在这里插入图片描述

三、根据兄弟控件定位

在相对布局中,还支持通过已确定位置的控件作为参考来确定其他控件的位置,以下的属性让的组合让控件处于另外控件左上角、右上角、左下角、右下角、正上方、正下方、正左方、正右方等位置。属性如下:

  • android:layout_toLeftOf="@+id/button1" 在button1控件左方

  • android:layout_toRightOf="@+id/button1" 在button1控件右方

  • android:layout_above="@+id/button1" 在button1控件上方

  • android:layout_below="@+id/button1" 在button1控件下方

  • android:layout_alignLeft="@+id/button1" 与button1控件左边平齐

  • android:layout_alignRight="@+id/button1" 与button1控件右边平齐

  • android:layout_alignTop="@+id/button1" 与button1控件上边平齐

  • android:layout_alignBottom="@+id/button1" 与button1控件下边平齐
    在这里插入图片描述

给一个控件添加 android:layout_toLeftOf="@+id/button1"android:layout_below="@+id/button1" 属性后该控件处于button1的左下方位置
在这里插入图片描述

给一个控件添加 android:layout_toLeftOf="@+id/button1"layout_alignTop="@+id/button1" 属性后该控件处于button1的正左方
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Android】相对布局(RelativeLayout)最全解析 的相关文章

  • 如何使用 Android Studio 2.1.3 从 Android 中的文本文件中获取随机行?

    我有一个 500 行的文本文件 我将此文本文件放置在 app src main assets 文件夹中 名称为 words txt 在此文件中 每一行都用换行符分隔 现在我需要从这个文本文件中获取随机行 在发布此内容之前 我访问了以下问题
  • 我可以在 Android 上使用带有文本视图的列表视图和图像图标吗

    我需要一个像下面的 Android 应用程序那样的列表视图 由于我无法发布图片 所以应该是这样的 图片在这里 一些自由文本 用户名等 这是你的任务 任务1 gt 任务2 gt 任务 1 和任务 2 是将从数据库动态获取的列表 我试图拥有一个
  • 如何在单击片段的按钮时替换该片段?

    我有一个包含多个片段的活动 Activity 最初有片段 其中有两个按钮 单击此按钮后 我必须用新片段替换该片段 每个片段都有各种小部件 并将当前片段替换为各种事件 这是我的问题 我怎样才能实现这个目标 给我建议 您可以用 Fragment
  • 通过使用计时器(或处理程序)更改 ImageView 中的图像来创建动画

    我想通过更改 ImageView 内的帧来创建一个简单的动画 我不想使用 AnimationDrawable 因为我需要在帧更改或动画停止时接收事件 以便能够向后播放 重新启动等等 我的问题是 尽管 setImageDrawable 被调用
  • 如何从 BroadcastReceiver 刷新 ListView?

    如果我打电话notifyDataSetChanged 在与我的 ListView 关联的自定义适配器上 所有视图都应该自行刷新 getView 将被调用 现在我有一个正在监听事件的 BroadcastReceiver 当事件触发时 List
  • 在 IconPageIndicator 中自定义填充和边距

    我正在尝试实现自定义 IconPageIndicator viewpager 我想自定义 com viewpagerindicator IconPageIndicator 中显示的图标的边距和填充 所以我编写了自定义 IconPageInd
  • Android 在连接 Socket 时出现错误

    在阅读了一些express io文档并成功连接到之后 我尝试使用nodejs和express io编写简单的应用程序http chat socket io在命令行中运行下面的代码并打开后 我找到了使用 nodejs 和express io
  • 如何将json从android发送到php?

    为了将 json 从 android 发布到 php 我使用了 Volley 库StringRequest目的 StringRequest sr new StringRequest Request Method POST url new R
  • Android 应用程序 Azure 依赖项 gradle 构建时出错

    我在 Android Studio 2 3 3 的 Gradle 同步中收到以下错误 错误 模块 com microsoft azure azure mobile android 3 3 0 依赖于一个或多个 Android 库 但它是一个
  • Android 自定义对话框中的图标

    有没有一种方法可以在不使用 AlertDialog 方法的情况下在自定义对话框上设置图标 对话框有标题 但缺少漂亮的分隔线和设置图标的功能 但肯定有一种方法可以在不使用 AlertDialog 的情况下获得两者 您可以使用以下代码添加图标
  • 如何转到材料日历视图中选定的日期?

    我在用着材料日历视图 https github com prolificinteractive material calendarview在我的项目中 我可以使用 setSelectedDate 方法更改日期的选择 我有一个 今天选择 按钮
  • 如何判断一个app是原生的还是html5的? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想知道移动应用程序是如何原生或 html5 的 有没有什么软件或者网站可以说明这一点 如何检测应用程序是本机应用程序还是 html5 您可以使用 w
  • PreferenceActivity 如何使用自定义首选项文件

    我第一次尝试偏好是在不了解PreferenceActivity 所以现在我有一个应用程序将所有用户首选项存储在特定的首选项文件中 我想迁移到使用 PreferenceActivity 但我也希望我的用户保留他们的偏好 有没有办法告诉我的 P
  • 动态元素 ID 到 setId(int) - Android

    我看到了语法定义setId int and findViewByID int 但我们如何使用findViewById R id row1 我尝试使用这个 Object1 setId Integer parseInt repeat 它没有显示
  • 二进制 XML 文件行 #:膨胀类片段时出错:仅在 Android (6.0)-Marshmallow 上

    我无法在 Android M 上显示 google 地图 这是布局 xml
  • 应用程序被终止时无法处理 FCM 消息

    我一直在阅读各种教程 其他 SO 线程以及官方 Android 开发人员和 Firebase 文档 但无济于事 我已经尝试了几乎所有的方法 但我已经耗尽了精力和时间 因为我正在修复以前可以工作但现在不再工作的通知系统 我正在使用 Azure
  • android:如何显示TableLayout的边框

    我如何突出显示表格布局的边框 在使用以形状为背景的圆形 shape xml 时 必须有某种方法可以为您的表格布局提供边框 圆形 xml
  • GreenDao交易

    我在用着GreenDao存储大量数据 来自休息服务 我的很多实体都与关系相关 一切都很顺利 但明天我必须实施坚如磐石的工作流程 当我加载数据时我必须检查是否发生错误 如果是这样 我必须确保没有存储任何内容在 SQLite 数据库中 通常我会
  • 如何在显示项目之前为 RecyclerView 高度设置动画

    我怎样才能 或者我应该说什么时候可以在显示项目之前对 recyclerView 高度进行动画处理 我可以在 onMeasure 中获得最终高度 但项目总是出现太快并且动画不起作用 关于如何让这个动画发挥作用有什么想法吗 None
  • Android 6.0.1 无法以编程方式启用 wifi 热点

    当我尝试通过以下代码启用 wifi 网络共享时 它会抛出异常 com java lang reflect Method invoke Native Method 处的 java lang reflect InitationTargetExc

随机推荐

  • Springboot中使用netty 实现 WebSocket 服务

    依赖
  • C语言:写文件

    C语言 写文件 在C语言中 我们可以使用标准库函数来创建 打开 写入和关闭文件 文件操作是处理数据的重要方面之一 它允许我们将数据永久保存在磁盘上 并在需要时进行读取和修改 本文将介绍如何在C语言中写入文件 并提供相应的源代码示例 首先 我
  • [Dynamics CRM]错误代码参考

    转载于 http it zhaozhao info archives 20266 0x80048472 One or more imports are not in completed state Imported records can
  • 【Darknet】模型隐藏的一种方法

    之前在一个公司实习的时候有个需求 说要把Darknet的模型隐藏起来 就是说提供给用户的只有dll 而cfg和weights文件不能直接给客户 不然就暴露商业机密了嘛 所以就研究了一下如何隐藏模型 主要参考这篇文章 具体原理咱也不是很懂 反
  • 微信小程序使用AES加密和解密

    前端请求后端接口进行参数加密处理 const CryptoJs require crypto js const defaultKey zoe nurse qazxr8 默认的key const defaultIv qwertyuiopasd
  • [性能测试]LR常见问题整理

    1 LR 脚本为空的解决方法 1 去掉ie设置中的第三方支持取消掉 2 在系统属性 高级 性能 数据执行保护中 添加loadrunner安装目录中的vugen exe文件 有可能是由于录制的URL地址采用的是localhost的问题 改成分
  • centos系统服务器脚本,CentOS使用脚本管理服务的详解

    1 使用工具 chkconfig 管理 etc rc d init d或 etc init d 目录下的服务启动脚本 要在服务启动脚本开头添加两行 chkconfig 2345 88 12 description XXXXXXXXX XXX
  • 群晖NAS报“发生网络错误。请检查DNS和网络设置”的解决方法

    如标题中所述 新买的群晖DNS 登录Synology账号 设置所谓的QuickConnect的时候就会报这种错误 尝试了一下 控制面板 网络 手动配置DNS服务器 填入 180 76 76 76 再进行类似如图所示的设置即可 呵呵 貌似这个
  • 可能是全网最清晰的KMP算法讲解

    字符串匹配 字符串A是否为字符串B的子串 如果是 出现在B的什么位置 这个问题就是字符串匹配问题 字符串A称为模式串 字符串B称为主串 那么 如何查找模式串在主串中的位置呢 暴力匹配 暴力匹配 顾名思义 是一种简单粗暴的匹配方法 从主串的第
  • ubuntu上安装微信

    一 下载安装Wine环境包 http archive ubuntukylin com software pool partner ukylin wine 70 6 3 25 amd64 deb 二 下载安装微信包 http archive
  • Oracle:修改表空间和数据文件的名称

    1 修改表空间名称 alter tablespace tablespace name1 rename to tablespace name2 2 修改数据文件名称 1 先将联机状态的需要修改的表空间设置为脱机状态 ALTER TABLESP
  • 解决Value '0000-00-00 ' can not be represented as java.sql.Timest

    在使用MySql 时 数据库中的字段类型是timestamp的 默认为0000 00 00 会发生异常 java sql SQLException Value 0000 00 00 can not be represented as jav
  • javascript画全年日历

    前些日子闲聊群里有人提了用js画全年日历的需求 趁闲暇时间画了个小demo 下面还是先上效果图吧 高亮显示的是今天的日期和标记要高亮显示的日期 也添加了点击事件的钩子 自己可以实现钩子函数 从而操作点击的日期值 下面还是先上dai 日历视图
  • Linux 系统 /var/log/journal/ 垃圾日志清理

    CentOS系统中有两个日志服务 分别是传统的 rsyslog 和 systemd journal systemd journald是一个改进型日志管理服务 可以收集来自内核 系统早期启动阶段的日志 系统守护进程在启动和运行中的标准输出和错
  • 第1章 Java基础(二)

    1 11 重写和重载的概念 难度 重点 白话解析 这道题它的重点不仅仅是在面试中 因为后续在做开发的时候会接触到大量的重写或重载 也正是因为他们 才实现了Java的多态特性 1 重写 好好理解下 就是本来父亲写好了一个方法 然后儿子觉得父亲
  • 你的Qt按钮可以加载Gif圆形的头像吗?

    先上效果 先看要求 我们首先要求 1 这是一个按钮 所以可以想到重写控件的基类一定是QPushButton 2 我们要求可以播放Gif图片 由此可想到 图片的加载肯定绕不开QMoive 3 头像是圆形的 猜想是不是可以通过样式表 或者重新p
  • 第36步 深度学习图像识别:TensorFlow-gpu环境配置

    基于WIN10的64位系统演示 一 写在前面 从这一期开始分享基于深度学习图像识别的学习笔记和代码 相比于之前的ML分类模型 图像识别的门槛会更高 包括硬件方面 代码复杂度和基础理论知识等 同样 首先把必要的深度学习框架 类似做ML分类 要
  • Windows巧用git实现笔记自动备份

    Windows巧用git实现笔记自动备份 准备git仓库 配置自动上传脚本 设置 Windows 自动定时任务 参考文献 今天突然发现 可以 使用Gitee加上Windows定时任务 实现Windows端的笔记 自动备份 多端同步 历史回溯
  • gin 获取get 所有参数_Golang Gin 实战(三)

    在 上一篇 Golang Gin 实战 二 简便的Restful API 实现 文章中 我们留了一个疑问 假如我们有很多用户 我们要为他们一个个注册路由 路径 吗 路由路径 如下URL users 123 users 456 users 2
  • 【Android】相对布局(RelativeLayout)最全解析

    Android 相对布局 RelativeLayout 最全解析 一 相对布局 RelativeLayout 概述 二 根据父容器定位 三 根据兄弟控件定位 一 相对布局 RelativeLayout 概述 相对布局 RelativeLay