【android开发-10】android中四种布局详细介绍

在Android开发中,常见的四种布局分别是:线性布局(LinearLayout)、相对布局(RelativeLayout)、帧布局(FrameLayout)和绝对布局(AbsoluteLayout)。

注意:布局是一种可以放置许多控件的容器,除了放置控件外,也可以放置布局,实现布局的嵌套。

在这里插入图片描述

1,线性布局(LinearLayout):
Android中的LinearLayout是一种常用的布局方式,它可以让子View在垂直或水平方向上按照一定的顺序排列。下面介绍几个常用的LinearLayout属性:

orientation:用于设置子View的排列方向。可以设置为vertical(垂直排列)或horizontal(水平排列)。

layout_gravity:用于设置子View在LinearLayout中的对齐方式。可以设置为left、right、top、bottom、center_vertical、center_horizontal等值。

gravity:用于设置子View内部元素的对齐方式。可以设置为left、right、top、bottom、center_vertical、center_horizontal等值。

注意:layout_gravity和gravity的区别,gravity用于指定文字在控件内的对齐方式,而layout_gravity用于指定控件在布局内的对齐方式。

weight:用于设置子View的权重,可以用于在垂直或水平排列时控制子View的宽度或高度。

注意:weight使用比例的方式来指定控件的大小。

以上是LinearLayout的一些常用属性,使用时可以根据需要进行设置。

以下是一个简单的Android线性布局的XML用例:

<LinearLayout  android:layout_width="match_parent"  android:layout_height="match_parent"  android:orientation="vertical"  android:gravity="center">  <TextView  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:text="Hello World!"  android:textSize="24sp" />  <Button  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:text="Click Me" />  </LinearLayout>

这个XML文件定义了一个垂直方向的LinearLayout,其中包含一个TextView和一个Button。TextView和Button会按照垂直方向排列,并且都居中对齐。您可以根据需要修改属性值来调整布局的外观和行为。

2,相对布局(RelativeLayout)

Android中的相对布局(RelativeLayout)是一种灵活的布局方式,允许您根据相对位置来放置视图。下面是几个常用的相对布局属性介绍:

layout_centerInParent:将视图相对于其父视图居中。如果其父元素是一个RelativeLayout,那么它就会相对于那个RelativeLayout居中。

layout_alignParentLeft、layout_alignParentRight、layout_alignParentTop、layout_alignParentBottom:将视图相对于其父视图边缘对齐。

layout_above、layout_below、layout_toLeftOf、layout_toRightOf、layout_alignBaseline:这些属性用于将一个视图相对于另一个视图放置。例如,layout_toLeftOf将视图放置在另一个视图的左侧。

layout_marginLeft、layout_marginRight、layout_marginTop、layout_marginBottom:这些属性用于设置视图的外边距

layout_alignStart、layout_alignEnd:这些属性可以将视图相对于其父视图的开始或结束边缘对齐。

layout_alignLeft、layout_alignRight:这些属性可以将视图相对于其父视图的左侧或右侧对齐。

layout_alignTop、layout_alignBottom:这些属性可以将视图相对于其父视图的顶部或底部对齐。

layout_toStartOf、layout_toEndOf:这些属性可以将视图相对于其父视图的开始或结束边缘对齐,且不跨越视图的边界。

match_parent:此属性可以将视图扩展到其父视图的边界以填充可用空间。
以上是相对布局的一些常用属性,使用时可以根据需要进行设置。

下面是一个使用Android相对布局的XML参考用例:

<RelativeLayout  android:layout_width="match_parent"  android:layout_height="match_parent">  <Button  android:id="@+id/my_button"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:text="Click Me"  android:layout_centerInParent="true"/>  <TextView  android:id="@+id/my_textview"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:text="Hello World!"  android:layout_below="@id/my_button"  android:layout_marginTop="16dp" />  </RelativeLayout>

这个相对布局中,有一个按钮和一个文本视图。按钮被设置为在父视图中居中,文本视图则被设置为在按钮下方,并与其顶部边缘对齐。注意,android:layout_below="@id/my_button"指定了文本视图相对于按钮的位置。此外,通过设置android:layout_marginTop="16dp"为文本视图添加了上边距。

注意:当一个控件去引用另外一个控件的id时,该控件一定要定义在引用控件的后面,不然会出现找不到id的情况。

3,帧布局(FrameLayout)
FrameLayout是Android中一种最简单的布局方式,它以层叠的方式显示子View。FrameLayout中所有的子View都不能被指定放置的位置,它们统统放于这块区域的左上角,并且后面的子View直接覆盖在前面的子View之上,将前面的子View部分或全部遮挡。

FrameLayout的应用比较常见的有两个方面:一是应用于多个活动的叠加,二是应用于在转动的进度条中显示加载进度。

如何设置FrameLayout中子View的位置:通过layout_gravity设定值,再配合layout_marginTop,layout_marginLeft来设置位置。例如,下面的代码将ImageView显示在屏幕左上角,并设置其左边距和上边距为10dp:

<ImageView  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:src="@drawable/my_image"  android:layout_gravity="left|top"  android:layout_marginLeft="10dp"  android:layout_marginTop="10dp" />

FrameLayout没有gravity属性,图片中的居中显示效果是通过设置子类控件的layout_gravity属性来实现的。

页面叠加的实现:用4个TextView就可以实现,只要修改每个TextView的背景颜色和大小,然后将它们居中显示即可。

下面是一个使用FrameLayout的XML用例:

<FrameLayout  android:layout_width="match_parent"  android:layout_height="match_parent">  <ImageView  android:id="@+id/image_view"  android:layout_width="match_parent"  android:layout_height="match_parent"  android:src="@drawable/my_image"  android:scaleType="centerCrop" />  <TextView  android:id="@+id/text_view"  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:textSize="20sp"  android:text="This is my text view"  android:layout_marginTop="10dp"  android:textColor="#FFFFFF"  android:background="#000000" />  </FrameLayout>

这个FrameLayout中包含一个ImageView和一个TextView。ImageView填充整个FrameLayout,并设置其src属性为一张图片。TextView设置在ImageView上方,具有黑色背景和白色文本。通过设置TextView的layout_marginTop属性,可以调整其与ImageView之间的距离。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/188650.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第16届中国R会议暨2023X-AGI大会开幕,和鲸科技分享ModelOps在数据科学平台中的实践与应用

11月25日&#xff0c;第 16 届中国 R 会议暨 2023 X-AGI 大会在在中国人民大学逸夫会堂拉开帷幕&#xff0c;本次会议由中国人民大学统计学院、中国人民大学应用统计科学研究中心、统计之都、原灵科技和中国商业统计学会人工智能分会&#xff08;筹&#xff09;主办&#xff0c…

React项目使用NProgress作为加载进度条

React项目使用NProgress作为加载进度条 0、效果1、react安装依赖2、使用3.进度条颜色设置 文档参考&#xff1a;https://zhuanlan.zhihu.com/p/616245086?utm_id0 0、效果 如下&#xff0c;可全局在页面顶部有一条进度条 1、react安装依赖 yarn add nprogress通过以上安装…

pytest自动化框架之allure测试报告的用例描述设置

allure测试报告的用例描述相关方法&#xff1b;如下图 allure标记用例级别severity 在做自动化测试的过程中&#xff0c;测试用例越来越多的时候&#xff0c;如果执行一轮测试发现了几个测试不通过&#xff0c;我们也希望能快速统计出缺陷的等级。 pytest结合allure框架可以对…

YOLOv5项目实战(5)— 算法模型优化和服务器部署

前言:Hello大家好,我是小哥谈。近期,作者所负责项目中的算法模型检测存在很多误报情况,为了减少这种误报情况,作者一直在不断优化算法模型。鉴于此,本节课就给大家详细介绍一下实际工作场景中如何去优化算法模型和进行部署,另外为了方便大家进行模型训练,作者在文章中提…

oracle FUNCTION(任意两个时间 之间的工作小时)

写函数计算 任意两个时间 之间的工作小时 每天工作时间&#xff08;8:00 - 20:00 共12小时&#xff09;&#xff0c;没有休息日 CREATE OR REPLACE FUNCTION SC_YD_DESI.CALCULATE_WORK_HOURS_FUNC (p_current_time IN DATE,p_order_time IN DATE ) RETURN NUMBER ASp_work_hou…

AWS Remote Control ( Wi-Fi ) on i.MX RT1060 EVK - 1 “建立开发环境”

这个系列的文章将叙述如何借由 NXP 的“evkmimxrt1060_aws_remote_control_wifi_nxp”这支 Sample Code&#xff0c;达到 NXP RT1060EVK 经由 U-Blox EVK-JODY-W263 将资讯传到 AWS 上&#xff0c;并可借由手机对 RT1060 EVK 的 LED 进行远端控制。 整体架构如下图所示&#x…

道可云会展元宇宙平台全新升级,打造3D沉浸式展会新模式

随着VR虚拟现实、人工智能、虚拟数字人等元宇宙技术的快速发展&#xff0c;各个行业正试图通过元宇宙技术寻求新的发展突破口&#xff0c;会展行业也不例外。会展作为经贸领域的重要产业形态&#xff0c;越来越多的企业和组织开始寻求通过元宇宙技术为展会赋能&#xff0c;以满…

【EI会议征稿】第七届大数据与应用统计国际学术研讨会(ISBDAS 2024)

第七届大数据与应用统计国际学术研讨会&#xff08;ISBDAS 2024&#xff09; 2024 7th International Symposium on Big Data and Applied Statistics 第七届大数据与应用统计国际学术研讨会&#xff08;ISBDAS 2024&#xff09;定于2024年3月8-10日在中国上海举行。会议旨在…

最小化安装 Neokylin7.0 用于搭建 Hadoop 集群

文章目录 环境搭建背景虚拟机创建和环境配置安装过程注意事项虚拟机设置软件选择KOUMP系统分区网络和主机名打开以太网&#xff0c;并记录信息配置 IPv4修改主机名 创建用户 hadoop完全分布式搭建-CSDN博客 环境搭建背景 为什么不从hadoop100或者hadoop101开始&#xff0c;而是…

STM32CubeMx+MATLAB Simulink点灯程序

STM32CubeMxMATLAB点灯程序 ✨要想实现在MATLAB Simulink环境下使用STM32&#xff0c;前提是已经搭建好MATLAB环境并且安装了必要的Simulink插件&#xff0c;以及对应的STM32支持包。 &#x1f33f;需要准备一块所安装支持包支持的STM32开发板. &#x1f516;具体支持包详情页…

Java强制类型转换的所有规则都在这里了

&#x1f497;推荐阅读文章&#x1f497; &#x1f338;JavaSE系列&#x1f338;&#x1f449;1️⃣《JavaSE系列教程》&#x1f33a;MySQL系列&#x1f33a;&#x1f449;2️⃣《MySQL系列教程》&#x1f340;JavaWeb系列&#x1f340;&#x1f449;3️⃣《JavaWeb系列教程》…

VR全景对旅游业有什么帮助,如何助力旅游业实现新的旅游形式

引言&#xff1a; 旅游业是一个充满机遇的行业&#xff0c;而虚拟现实&#xff08;VR&#xff09;全景技术正逐渐改变着旅游业的面貌&#xff0c;通过提供身临其境的体验&#xff0c;VR全景成为了旅游业的新宠&#xff0c;将旅游带入了一个全新的数字化时代。 一、打破地域限制…

【C指针】深入理解指针(最终篇)数组指针指针运算题解析(一)

&#x1f308;write in front :&#x1f50d;个人主页 &#xff1a; 啊森要自信的主页 ✏️真正相信奇迹的家伙&#xff0c;本身和奇迹一样了不起啊&#xff01; 欢迎大家关注&#x1f50d;点赞&#x1f44d;收藏⭐️留言&#x1f4dd;>希望看完我的文章对你有小小的帮助&am…

Prometheus集群模式部署日记-主节点篇

Prometheus架构组件主节点masterPrometheus-master&#xff0c;Alertmanger&#xff0c;Grafana&#xff0c;PrometheusAlert子节点node(不同网络&#xff0c;混合云环境)Prometheus-node1 所有组件均采用docker-compose部署&#xff0c;docker 和 compose 请自行安装不再赘述…

基于AT89C51单片机的电子闹钟设计

1&#xff0e;设计任务 利用AT89C51单片机为核心控制元件,设计一个电子闹钟&#xff0c;设计的系统实用性强、操作简单&#xff0c;实现了智能化、数字化。 &#xff08;1&#xff09;按开始键自动进入时间显示&#xff0c;开始为0&#xff0c;按K1键进入更改时间&#xff0c…

11.30BST理解,AVL树操作,定义;快速幂,二分求矩阵幂(未完)

完全二叉树结点的度可能有1&#xff0c;满二叉树的度只能为0或2 BST构建 BST是左孩子都比根节点小&#xff0c;右孩子都比根节点大 二叉搜索树的插入&#xff0c;删除&#xff0c;调整 平衡树理解 任何一个平衡二叉树&#xff0c;它的中序遍历都是一样的&#xff0c;都是有…

LangChain的函数,工具和代理(三):LangChain中轻松实现OpenAI函数调用

在我之前写的两篇博客中:OpenAI的函数调用,LangChain的表达式语言(LCEL)中介绍了如何利用openai的api来实现函数调用功能&#xff0c;以及在langchain中如何实现openai的函数调用功能&#xff0c;在这两篇博客中&#xff0c;我们都需要手动去创建一个结构比较复杂的函数描述变量…

0X04

看到一道有趣的misc题 misc签到题 打开后啥都没有&#xff0c;全选后发现每一行有空格&#xff0c;数了一行发现空格数量转ascil码后是f&#xff0c;猜测都如此&#xff0c; 后面就可以交个脚本了&#xff0c;统计之后转换成ascii from Crypto.Util.number import long_to_b…

YOLOv8-Seg改进:SENetV2,squeeze和excitation全面升级,效果优于SENet | 2023年11月最新成果

🚀🚀🚀本文改进: SENetV2,squeeze和excitation全面升级,作为注意力机制引入到YOLOv8,放入不同网络位置实现涨点 🚀🚀🚀YOLOv8-seg创新专栏:http://t.csdnimg.cn/KLSdv 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 1)手把手教你如何训练YOLOv8-s…

《曾国藩传》:崇尚笨拙的人生哲学

哈喽啊&#xff0c;大家好&#xff0c;我是雷工&#xff01; 以前读书喜欢读小说&#xff0c;喜欢看《我从你的全世界路过》《云间有个小卖铺》这些轻松的小说&#xff0c;读起来很轻松。 随着年龄增长&#xff0c;阅历的增加开始喜欢读历史&#xff0c;读人物传记&#xff0c;…