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

news2025/2/26 9:36:30

在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.coloradmin.cn/o/1274703.html

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

相关文章

【紫光同创PCIE教程】——使用官方驱动在Windows下进行DMA读写操作/PIO读写操作

本原创教程由深圳市小眼睛科技有限公司创作&#xff0c;版权归本公司所有&#xff0c;如需转载&#xff0c;需授权并注明出处&#xff08;www.meyesemi.com) 紫光同创官方主推的是在linux系统下开发驱动和上层软件&#xff0c;相应地&#xff0c;官方提供了在linux一个基于GTK2…

户外电力检测设备,如何实现远程数据实时互通?

北京某企业专注于电力设备的局部放电检测与监测技术的研究与实践应用&#xff0c;可提供局部放电开关柜检测、高频局部放电发电机检测、电力设备绝缘检测等方案。 在实际项目实施过程&#xff0c;企业工作人员需要在各地电力设施部署放电监测设备并进行检测。由于经常涉及户外的…

jQuery的使用

目录 jquery对象&#xff1a; jquery作为一般函数调用参数: jquery事件机制 jquery dom操作 jquery对象&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" cont…

Android 12 及以上授权精确位置和模糊位置

请求位置信息权限 为了保护用户隐私&#xff0c;使用位置信息服务的应用必须请求位置权限。 请求位置权限时&#xff0c;请遵循与请求任何其他运行时权限相同的最佳做法。请求位置权限时的一个重要区别在于&#xff0c;系统中包含与位置相关的多项权限。具体请求哪项权限以及…

数据结构:字典树(前缀树,Trie树),压缩字典树(Radix)

字典树Trie Tree 字典树也称前缀树&#xff0c;Trie树。在 Elasticsearch 的倒排索引中用的也是 Trie 树。是一种针对字符串进行维护的数据结构。 字典树是对词典的一种存储方式&#xff0c;这个词典中的每个“单词”就是从根节点出发一直到某一个目标节点的路径&#xff0c;…

C++算法入门练习——有向图判环

现有一个共n个顶点、m条边的有向图&#xff08;假设顶点编号为从0到n-1&#xff09;&#xff0c;如果从图中一个顶点出发&#xff0c;沿着图中的有向边前进&#xff0c;最后能回到这个顶点&#xff0c;那么就称其为图中的一个环。判断图中是否有环。 解题思路&#xff1a; 判断…

Python datetime 字符串 相互转 datetime

字符串转 datetime from datetime import datetime# 定义要转换的日期时间字符串 dt_str "2021-09-30 15:48:36"# 使用datetime.strptime()函数进行转换 dt_obj datetime.strptime(dt_str, "%Y-%m-%d %H:%M:%S") print(dt_obj)datetime 转字符串 from …

2023年11月随笔之双11成为有qian人

1. 回头看 日更坚持了334天。 学信息系统项目管理师第4版系列全部更新完成 读《图数据库实战》缓缓更...... 读《读程序员的制胜技》开更并更新完成 读《像火箭科学家一样思考&#xff1a;将不可能变为可能》开更持续更新中 11月码字68883字&#xff0c;日均码字数2296字…

2023年中国金融租赁行业研究报告

第一章 行业概况 1.1 定义 金融租赁是一种融资方式&#xff0c;其中租赁公司&#xff08;出租人&#xff09;为企业&#xff08;承租人&#xff09;购买所需设备&#xff0c;并在租赁期内由承租人使用。承租人负责支付租金&#xff0c;租赁期满后有权选择退租、续租或购买设备…

24年5月软考高项考哪些内容,考试大纲什么的?

信息系统项目管理师属于「计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试」中的高级资格考试。 也称「软考高项」&#xff0c;可以「以考代评」用来评副高级职称。 一、软考备考前期准备 信息系统项目管理师考试科目包括&#xff1a; 《综合知识》、《案例分…

java设计模式学习之【适配器模式】

文章目录 引言适配器模式简介定义与用途&#xff1a;实现方式&#xff1a;类型 使用场景优势与劣势适配器模式在Spring中的应用多媒体播放器示例代码地址 引言 在我们的日常生活中&#xff0c;适配器无处不在&#xff1a;无论是将不同国家的插头转换成本地标准&#xff0c;还是…

SSM众筹管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 SSM 众筹管理系统是一套完善的信息系统&#xff0c;结合springMVC框架完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开…

map()的用法

JavaScript Array map() 方法 先说说这个方法浏览器的支持&#xff1a; 支持五大主流的浏览器&#xff0c; 特别注意&#xff1a;IE 9 以下的浏览器不支持&#xff0c;只支持IE 9以上的版本的浏览器 特别注意&#xff1a;IE 9 以下的浏览器不支持&#xff0c;只支持IE 9以上的…

设计师必看!揭秘顶级外卖平台APP背后的设计原则

在数字化和移动互联网盛行的今天&#xff0c;外卖平台APP已经成为我们生活中的重要组成部分。作为设计师&#xff0c;你是否也曾思考过如何通过设计优化用户体验&#xff0c;提升品牌形象&#xff0c;甚至直接推动业务增长&#xff1f;今天&#xff0c;我们将向你揭示顶级外卖平…

Python内置类属性__cmp__属性的使用教程

概要 Python是一种简单而强大的编程语言&#xff0c;它提供了许多内置的类和功能&#xff0c;以帮助开发人员更轻松地实现各种任务。其中一个内置类属性是__cmp__&#xff0c;它允许我们在自定义类中实现对象之间的比较操作。本文将详细介绍__cmp__属性的使用方法&#xff0c;…

DistilBERT模型训练实战

LLM似乎正在接管世界&#xff0c;但许多人仍然不真正理解他们是如何运作的。 我从事机器学习工作已有几年&#xff0c;并且对自然语言处理和最近的进展非常着迷。 尽管我阅读了大部分随附的论文&#xff0c;但训练这些模型对我来说仍然是一个谜&#xff0c;这就是为什么我决定…

CSS中的非布局样式+CSS布局 前端开发入门笔记(十一)

CSS中的非布局样式 在CSS中&#xff0c;非布局样式是指那些不会直接影响页面布局的样式。这些样式主要关注的是元素的颜色、字体、背景、边框、阴影等视觉效果。以下是一些常见的非布局CSS样式&#xff1a; 文本样式&#xff1a;包括字体&#xff08;font-family&#xff09;…

以太网PHY,MAC接口

本文主要介绍以太网的 MAC 和 PHY&#xff0c;以及之间的 MII&#xff08;Media Independent Interface &#xff0c;媒体独立接口&#xff09;和 MII 的各种衍生版本——GMII、SGMII、RMII、RGMII等。 简介 从硬件的角度看&#xff0c;以太网接口电路主要由MAC&#xff08;M…

GAN:WGAN-GP-带有梯度惩罚的WGAN

论文&#xff1a;https://arxiv.org/pdf/1704.00028.pdf 代码&#xff1a;GitHub - igul222/improved_wgan_training: Code for reproducing experiments in "Improved Training of Wasserstein GANs" 发表&#xff1a;2017 WGAN三部曲的终章-WGAN-GP 摘要 WGAN在…

YOLOv5全网独家首发改进:SENetv2,Squeeze-Excitation模块融合Dense Layer,效果秒杀SENet

💡💡💡本文自研创新改进:SENet v2,针对SENet主要优化点,提出新颖的多分支Dense Layer,并与Squeeze-Excitation网络模块高效融合,融合增强了网络捕获通道模式和全局知识的能力 推荐指数:五星 收录 YOLOv5原创自研 https://blog.csdn.net/m0_63774211/catego…