【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之间的距离。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Numpy数组的运算(第7讲)

Numpy数组的运算(第7讲)         🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ…

mazing是什么软件?为什么选择iMazing

说起iOS设备管理工具&#xff0c;可能大家还有点陌生&#xff0c;其实就是Apple公司开发的移动设备&#xff0c;因其的操作系统是独特的iOS系统&#xff0c;所以又叫iOS设备。比如大家都在用的iPhone手机&#xff0c;就是这样类型的一个设备。 mazing是什么软件? iMazing是一…

银河麒麟服务器部署Prometheus+Grafana

#年薪百万# 一、环境准备 操作系统&#xff1a;Operating System: Kylin Linux Advanced Server V10 (Sword) (X86-64) prometheus&#xff1a;prometheus-2.48.0.linux-amd64 grafana&#xff1a;grafana-enterprise-10.2.2.linux-amd64 node_exporter&#xff1a;node_expor…

React 快速实现拖拽改变容器宽高度

一、前言 有时我们需要对一个容器的宽高度进行动态的修改&#xff0c; 最简单直接的方法一般为&#xff1a;用户可以拖拽容器的边缘来改变其大小&#xff0c;例如下面这样的效果&#xff1a; 在react中&#xff0c;我们可以使用re-resizable这个三方库来快速的实现上面的效果…

Python os模块及用法

os 模块代表了程序所在的操作系统&#xff0c;主要用于获取程序运行所在操作系统的相关信息。 在 Python 的交互式解释器中先导入 os 模块&#xff0c;然后输入 os.__all__ 命令&#xff08;__all__ 变量代表了该模块开放的公开接口&#xff09;&#xff0c;即可看到该模块所包…

2023时代楷模人民艺术家蒋旗作品欣赏

时代楷模是我们生活中的榜样人物&#xff0c;是我们行业内的指路明灯&#xff0c;是传承弘扬中华优秀传统文化的传播者&#xff01; 弘扬中华优秀传统文化&#xff0c;繁荣中国书画艺术。坚持守正创新&#xff0c;推动书画艺术的创造性转化和创新性发展为优秀书画家搭建更为广…

YOLOv8 YoLov8l 模型输出及水果识别

&#x1f368; 本文为[&#x1f517;365天深度学习训练营学习记录博客 &#x1f366; 参考文章&#xff1a;365天深度学习训练营 &#x1f356; 原作者&#xff1a;[K同学啊 | 接辅导、项目定制] &#x1f680; 文章来源&#xff1a;[K同学的学习圈子](https://www.yuque.com/m…

spring boot整合mybatis进行部门管理管理的增删改查

部门列表查询&#xff1a; 功能实现&#xff1a; 需求&#xff1a;查询数据库表中的所有部门数据&#xff0c;展示在页面上。 准备工作&#xff1a; 准备数据库表dept&#xff08;部门表&#xff09;&#xff0c;实体类Dept。在项目中引入mybatis的起步依赖&#xff0c;mysql的…

同旺科技 USB TO RS-485 定制款适配器--- 拆解(三)

内附链接 1、USB TO RS-485 定制款适配器 ● 支持USB 2.0/3.0接口&#xff0c;并兼容USB 1.1接口&#xff1b; ● 支持USB总线供电&#xff1b; ● 支持Windows系统驱动&#xff0c;包含WIN10 / WIN11系统32 / 64位&#xff1b; ● 支持Windows RT、Linux、Mac OS X、Windo…

Python 案例实训教学,课程展示及结课存档优化|ModelWhale 版本更新

大雪时节&#xff0c;仲冬如约而至&#xff0c;我们也迎来了 ModelWhale 新一轮的版本更新。 本次更新中&#xff0c;ModelWhale 主要进行了以下功能迭代&#xff1a; 优化 课程大纲展示&#xff08;团队版✓&#xff09;优化 作业批量导出存档&#xff08;团队版✓&#xff…

springboot 整合 RocketMQ 可用于物联网,电商高并发场景下削峰,保证系统的高可用

本文根据阿里云 RocketMQ产品文档整理&#xff0c;地址:https://help.aliyun.com/document_detail/29532.html?userCodeqtldtin2 RocketMQ是由阿里捐赠给Apache的一款低延迟、高并发、高可用、高可靠的分布式消息中间件。经历了淘宝双十一的洗礼。RocketMQ既可为分布式应用系统…

Hadoop学习笔记(HDP)-Part.15 安装HIVE

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …

算法通关村第三关—继续讨论数据问题(黄金)

继续讨论数据问题 一、数组中出现次数超过一半的数字 Leetcode 169.多数元素 数组中有一个数字出现的次数超过数组长度的一半&#xff0c;请找出这个数字。例如&#xff1a;输入如下所示的一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次&#xff0c;超过数…

个人博客网站需求分析报告

目录 一. 概述1.1 目的1.2 背景1.3 术语定义 二. 需求分析三. 系统功能需求3.1 功能总览3.2 业务流程图1.系统用例图2.系统流程 四.开发技术4.1 技术组成 五.界面及运行环境1.用户界面2.运行环境 一. 概述 1.1 目的 1.2 背景 1.3 术语定义 二. 需求分析 三. 系统功能需求 …

微软NativeApi-NtQuerySystemInformation

微软有一个比较实用的Native接口&#xff1a;NtQuerySystemInformation&#xff0c;具体可以参考微软msdn官方文档&#xff1a;NtQuerySystemInformation&#xff0c; 是一个系统函数&#xff0c;用于收集特定于所提供的指定种类的系统信息。ProcessHacker等工具使用NtQuerySys…

【matlab程序】matlab画螺旋图|旋转图

%% 数学之美====》螺旋线 % 海洋与大气科学 % 20231205 clear;clc;close all; n=10; t=0:0.01:2pin; R=1; xx=nan(length(t),1);yy=nan(length(t),1); for i=1:length(t) xx(i)=Rcos(t(i)); yy(i)=Rsin(t(i)); R=R+1; end figure set(gcf,‘position’,[50 50 1200 1200],‘col…

【语义分割数据集】——imagenet语义分割

地址&#xff1a;https://github.com/LUSSeg/ImageNet-S 1 例图 2. 类别和数量信息 疑问 根据原文的描述&#xff1a;Based on the ImageNet dataset, we propose the ImageNet-S dataset with 1.2 million training images and 50k high-quality semantic segmentation annot…

实用方法 | 搭建真正满足用户需求的在线帮助中心

随着互联网的普及和信息技术的快速发展&#xff0c;客户服务和支持变得越来越重要。为了提高客户满意度和维持良好的品牌形象&#xff0c;越来越多企业都开始搭建自己的在线帮助中心。 不知从何下手&#xff1f;细想一下&#xff0c;搭建在线帮助中心主要就是为了解决用户的问…

【Angular开发】Angular 16发布:发现前7大功能

Angular 于2023年5月3日发布了主要版本升级版Angular 16。作为一名Angular开发人员&#xff0c;我发现这次升级很有趣&#xff0c;因为与以前的版本相比有一些显著的改进。 因此&#xff0c;在本文中&#xff0c;我将讨论Angular 16的前7个特性&#xff0c;以便您更好地理解。…

12.8 作业 C++

使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0c;密码是否为…