笔记四:常用布局:相对布局——RelativeLayout
引言在上一节中我们对LinearLayout进行了详细的解析LinearLayout也是我们 用的比较多的一个布局,我们更多的时候更钟情于他的weight(权重)属性等比例划分对屏幕适配还是 帮助蛮大的;但是使用LinearLayout的时候也有一个问题就是当界面比较复杂的时候需要嵌套多层的 LinearLayout,这样就会降低UI Render的效率(渲染速度),而且如果是listview或者GridView上的 item,效率会更低,另外太多层LinearLayout嵌套会占用更多的系统资源,还有可能引发stackoverflow; 但是如果我们使用RelativeLayout的话,可能仅仅需要一层就可以完成了,以父容器或者兄弟组件参考margin padding就可以设置组件的显示位置,是比较方便的!当然,也不是绝对的,具体问题具体分析吧! 总结就是:尽量使用RelativeLayout LinearLayout的weight属性搭配使用吧1.核心属性图2.父容器定位属性示意图3.根据兄弟组件定位恩,先说下什么是兄弟组件吧,所谓的兄弟组件就是处于同一层次容器的组件,如图图中的组件1,2就是兄弟组件了,而组件3与组件1或组件2并不是兄弟组件,所以组件3不能通过 组件1或2来进行定位,比如layout_toleftof 组件1这样是会报错的切记 关于这个兄弟组件定位的最经典例子就是梅花布局了,下面代码实现下:运行效果图实现代码RelativeLayout xmlns:androidhttp://schemas.android.com/apk/res/android xmlns:toolshttp://schemas.android.com/tools android:idid/RelativeLayout1 android:layout_widthmatch_parent android:layout_heightmatch_parent !-- 这个是在容器中央的 -- ImageView android:idid/img1 android:layout_width80dp android:layout_height80dp android:layout_centerInParenttrue android:srcdrawable/pic1/ !-- 在中间图片的左边 -- ImageView android:idid/img2 android:layout_width80dp android:layout_height80dp android:layout_toLeftOfid/img1 android:layout_centerVerticaltrue android:srcdrawable/pic2/ !-- 在中间图片的右边 -- ImageView android:idid/img3 android:layout_width80dp android:layout_height80dp android:layout_toRightOfid/img1 android:layout_centerVerticaltrue android:srcdrawable/pic3/ !-- 在中间图片的上面-- ImageView android:idid/img4 android:layout_width80dp android:layout_height80dp android:layout_aboveid/img1 android:layout_centerHorizontaltrue android:srcdrawable/pic4/ !-- 在中间图片的下面 -- ImageView android:idid/img5 android:layout_width80dp android:layout_height80dp android:layout_belowid/img1 android:layout_centerHorizontaltrue android:srcdrawable/pic5/ /RelativeLayout4.margin与padding的区别初学者对于这两个属性可能会有一点混淆这里区分下 首先margin代表的是偏移,比如marginleft 5dp表示组件离容器左边缘偏移5dp; 而padding代表的则是填充,而填充的对象针对的是组件中的元素,比如TextView中的文字 比如为TextView设置paddingleft “5dp”,则是在组件里的元素的左边填充5dp的空间 margin针对的是容器中的组件而padding针对的是组件中的元素要区分开来 下面通过简单的代码演示两者的区别:比较示例代码如下RelativeLayout xmlns:androidhttp://schemas.android.com/apk/res/android xmlns:toolshttp://schemas.android.com/tools android:layout_widthmatch_parent android:layout_heightmatch_parent android:paddingBottomdimen/activity_vertical_margin android:paddingLeftdimen/activity_horizontal_margin android:paddingRightdimen/activity_horizontal_margin android:paddingTopdimen/activity_vertical_margin tools:context.MainActivity Button android:idid/btn1 android:layout_heightwrap_content android:layout_widthwrap_content android:textButton/ Button android:paddingLeft100dp android:layout_heightwrap_content android:layout_widthwrap_content android:textButton android:layout_toRightOfid/btn1/ Button android:idid/btn2 android:layout_heightwrap_content android:layout_widthwrap_content android:textButton android:layout_alignParentBottomtrue/ Button android:layout_marginLeft100dp android:layout_heightwrap_content android:layout_widthwrap_content android:textButton android:layout_toRightOfid/btn2 android:layout_alignParentBottomtrue/ /RelativeLayout运行效果图比较5.很常用的一点:margin可以设置为负数相信很多朋友都不知道一点吧平时我们设置margin的时候都习惯了是正数的, 其实是可以用负数的,下面写个简单的程序演示下吧,模拟进入软件后,弹出广告 页面的,右上角的cancle按钮的margin则是使用负数的效果图如下:贴出的广告Activity的布局代码吧,当然,如果你对这个有兴趣的话可以下下demo, 因为仅仅是实现效果,所以代码会有些粗糙RelativeLayout xmlns:androidhttp://schemas.android.com/apk/res/android xmlns:toolshttp://schemas.android.com/tools android:layout_widthmatch_parent android:layout_heightmatch_parent tools:contextcom.jay.example.relativelayoutdemo.MainActivity android:background#00CCCCFF ImageView android:idid/imgBack android:layout_width200dp android:layout_height200dp android:layout_centerInParenttrue android:backgrounddrawable/myicon / ImageView android:idid/imgCancle android:layout_width28dp android:layout_height28dp android:layout_alignRightid/imgBack android:layout_alignTopid/imgBack android:backgrounddrawable/cancel android:layout_marginTop-15dp android:layout_marginRight-10dp / /RelativeLayout

相关新闻

如何快速找到并安装最适合的用户脚本:Greasy Fork实用指南

如何快速找到并安装最适合的用户脚本:Greasy Fork实用指南

如何快速找到并安装最适合的用户脚本:Greasy Fork实用指南 【免费下载链接】greasyfork An online repository of user scripts. 项目地址: https://gitcode.com/gh_mirrors/gr/greasyfork Greasy Fork是一个功能强大的在线用户脚本仓库,为用户提…

2026/7/28 18:28:12 阅读更多 →
问题解决方案之VC++

问题解决方案之VC++

文|Seraph本文档主要记录VC编程过程中,经常遇到的一些问题,以供大家参考。一、开发多文档形式在初始化时,使其框架以及视图最大化 框架最大化为在应用程序类的初始化函数中添加如下代码:BOOL CMDIAppDemoApp::InitInstance() …

2026/7/28 18:28:12 阅读更多 →
7天解放双手:AzurLaneAutoScript自动化脚本终极指南

7天解放双手:AzurLaneAutoScript自动化脚本终极指南

7天解放双手:AzurLaneAutoScript自动化脚本终极指南 【免费下载链接】AzurLaneAutoScript Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研,全自动大世界 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneAutoScript 还在为碧蓝航…

2026/7/28 18:28:12 阅读更多 →

最新新闻

tf.app.flags.FLAGS与tf.app.flags.DEFINE_string()用法

tf.app.flags.FLAGS与tf.app.flags.DEFINE_string()用法

举个栗子 新建test.py文件,并输入如下代码,代码的功能是创建几个命令行参数,然后把命令行参数输出显示 import tensorflow as tf FLAGStf.app.flags.FLAGS tf.app.flags.DEFINE_float(flag_float, 0.01, input a float) tf.app.flags.DEFINE…

2026/7/28 18:37:14 阅读更多 →
从源码构建Frida编译环境:解决Android定制与兼容性问题

从源码构建Frida编译环境:解决Android定制与兼容性问题

1. 项目概述:为什么我们需要一个自定义的Frida编译环境? 如果你正在阅读这篇文章,大概率已经和Frida打过交道了。无论是移动安全分析、应用动态插桩,还是逆向工程,Frida都是一个绕不开的神器。它那句“Dynamic instrum…

2026/7/28 18:37:14 阅读更多 →
本地部署AI代码助手Codex Taste:从环境配置到集成实践

本地部署AI代码助手Codex Taste:从环境配置到集成实践

这次我们来看一个名为 Codex Taste 的项目。从名称上看,它很可能与代码生成、代码质量评估或AI编程助手相关。这类工具的核心价值在于,能否在本地环境中稳定运行,提供高效的代码补全、审查或风格建议,并且对硬件资源的要求是否友好。 对于开发者而言,一个本地化的代码智…

2026/7/28 18:37:14 阅读更多 →
跨域问题

跨域问题

跨域是什么? 为什么要跨域? 跨域引发了哪些问题? 为什么会有这些跨域问题? 如何解决这些跨域问题? 以下内容主要是回答上面的几个问题。 1、跨域是什么? 跨域,简单来说,就是指从一个…

2026/7/28 18:37:14 阅读更多 →
WPS条件格式全解析:从基础操作到行业实战

WPS条件格式全解析:从基础操作到行业实战

1. WPS条件格式:从基础应用到高阶技巧全解析 作为一款国民级办公软件,WPS表格的条件格式功能远比大多数人想象的更强大。我在金融数据分析岗位上使用WPS近8年,处理过上万张数据表,条件格式是我每天必用的效率工具。不同于简单的颜…

2026/7/28 18:37:14 阅读更多 →
NBM5100A与STM32F722VE的低功耗物联网电源管理方案

NBM5100A与STM32F722VE的低功耗物联网电源管理方案

1. 项目背景与核心价值解析在物联网设备和小型便携式电子产品的设计中,纽扣电池(如CR2032)和锂亚硫酰电池(Li-SOCl2)因其体积小巧、能量密度高的特点被广泛采用。然而这类电池存在两个固有缺陷:一是放电电流…

2026/7/28 18:36:14 阅读更多 →

日新闻

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:43 阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…

2026/7/28 0:00:43 阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:43 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/28 8:29:16 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/28 5:03:42 阅读更多 →

月新闻