Android Studio开发(二) 常用布局

1、概述

在Android Studio中,布局方式指的是用于定义和排列界面元素(如按钮、文本框、图片等)的方式。Android应用的界面通常由多个视图组件组成,而布局方式则确定了这些视图组件在屏幕上的位置、大小和相互关系。

  • 适应不同屏幕尺寸和方向:Android设备有各种不同尺寸和分辨率的屏幕,使用布局可以确保应用在不同设备上都能正确显示,并且能够适应横向和纵向屏幕方向的切换。

  • 提高用户体验:通过合理的布局设计,可以使界面元素之间的关系清晰,用户可以更轻松地理解和操作应用,提升用户体验。

  • 实现复杂界面:布局方式可以帮助开发者实现复杂的界面设计,如网格布局、嵌套布局、滚动布局等,从而满足不同的设计需求。

  • 支持多语言和主题:布局可以灵活适配不同语言的文本和不同主题的样式,使应用更具可定制性。

  • 提高开发效率:使用布局可以更快速地构建界面,减少重复工作,提高开发效率。

2、线性布局(LinearLayout)

线性布局是最简单的布局方式之一,它按照水平或垂直方向依次排列子视图。可以通过设置子视图的权重来控制它们在布局中所占的比例。线性布局内部视图有两种排列方式:

  • orientation值为horizontal时,内部视图在水平方向上从左往右排列
  • orientation值为vertical时,内部视图在垂直方向从上往下排列

不指定orientation,默认为horizontal。

编写测试代码测试水平和垂直方向布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="22sp"android:text="Hello, World!" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Click Me" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Click Me" />
</LinearLayout>

水平方向测试效果:

修改orientation属性值为vertical进行垂直方向测试:

3、相对布局(RelativeLayout)

相对布局允许您根据其他视图的位置来定位子视图。可以使用各种属性来指定子视图相对于父视图或其他子视图的位置。如果不设定下级视图的参照物,那么下级视图默认显示在RelativeLayout内部的左上角。相对位置的属性取值及其说明如下表所示:

属性取值说明
layout_above当前视图在指定视图的上方
layout_below当前视图在指定视图的下方
layout_toLeftOf当前视图在指定视图的左边
layout_toRightOf当前视图在指定视图的右边
layout_alignTop当前视图的顶部与指定视图的顶部对齐
layout_alignBottom当前视图的底部与指定视图的底部对齐
layout_alignLeft当前视图的左边与指定视图的左边对齐
layout_alignRight当前视图的右边与指定视图的右边对齐
layout_alignParentTop当前视图的顶部与父布局的顶部对齐
layout_alignParentBottom当前视图的底部与父布局的底部对齐
layout_alignParentLeft当前视图的左边与父布局的左边对齐
layout_alignParentRight当前视图的右边与父布局的右边对齐
layout_centerHorizontal当前视图水平居中于指定视图或父布局
layout_centerVertical当前视图垂直居中于指定视图或父布局
layout_centerInParent当前视图水平和垂直居中于父布局

编写测试代码:

<?xml version="1.0" encoding="utf-8"?><RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello, World!" /><Buttonandroid:id="@+id/btn1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/textView"android:text="Click Me" /><Buttonandroid:id="@+id/btn2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/btn1"android:layout_toRightOf="@id/btn1"android:text="Click2" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:text="Click3" />
</RelativeLayout>

测试结果如下:

在线性布局中,可以使用权重(weight)属性来控制子视图在父布局中所占的比例。权重属性允许我们根据比例分配剩余空间,从而实现灵活的布局设计。

在线性布局中,可以使用layout_weight属性来设置子视图的权重。具体来说,layout_weight属性是一个浮点数,表示子视图在父布局中所占的相对权重。当线性布局的方向为水平时,权重决定子视图在水平方向上的分配比例;当方向为垂直时,权重决定子视图在垂直方向上的分配比例。在上述测试代码中添加以下代码:

    <LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:orientation="horizontal"><Buttonandroid:layout_width="0dp"android:layout_weight="1"android:layout_height="wrap_content"android:text="Button 1" /><Buttonandroid:layout_width="0dp"android:layout_weight="2"android:layout_height="wrap_content"android:text="Button 2" /></LinearLayout>

测试结果:

4、网格布局(GridLayout)

网格布局允许您将子视图放置在网格中的不同单元格中。可以指定子视图所占的行数和列数,以及它们的位置。

编写测试代码:

<?xml version="1.0" encoding="utf-8"?>
<GridLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:rowCount="2"android:columnCount="2"><Buttonandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_row="0"android:layout_column="0"android:layout_columnWeight="1"android:text="Button 1" /><Buttonandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_row="1"android:layout_column="1"android:layout_columnWeight="1"android:text="Button 2" />
</GridLayout>

测试结果如下:

5、滚动布局(ScrollView和HorizontalScrollView)

ScrollView是垂直方向的滚动视图,HorizontalScrollView是水平方向的滚动视图。滚动布局用于在屏幕空间有限的情况下支持滚动查看内容。当布局中的内容超出屏幕范围时,用户可以通过滑动屏幕来查看未显示的内容。

测试代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><HorizontalScrollViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hiding from the rain and snow
Trying to forget but I won't let go
Looking at a crowded street
Listening to my own heart beat" /></HorizontalScrollView>
</LinearLayout>

测试结果:

6、总结

本文讲述了Android Studio常用的简单布局,编写代码进行测试。

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

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

相关文章

时钟显示 html JavaScript

sf.html <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>时间</title><script>function showTime(){var timenew Date();var datetime.getDate();var yeartime.getFullYear();var monthtime.getMonth()1;var …

Tailscale中继服务derper使用docker-compose部署

docker启动 docker run --restart always \--name derper -p 12345:12345 -p 3478:3478/udp \-v /root/.acme.sh/xxxx/:/app/certs \-e DERP_CERT_MODEmanual \-e DERP_ADDR12345 \-e DERP_DOMAINxxxx \-d ghcr.io/yangchuansheng/derper:latestdocker-compose启动 version: …

vue3中的生命周期有哪些和怎么使用?

目录 前言&#xff1a; 正文&#xff1a; 总结: 前言&#xff1a; Vue.js 3是Vue.js框架的最新主要版本&#xff0c;引入了一些重大的改变和增强。在Vue 3中&#xff0c;由于Composition API的引入&#xff0c;生命周期钩子被替换为生命周期函数。 正文&#xff1a; 以下是…

Golang的Channel源码阅读、工作流程分析。

Channel整体结构 源码位置 位于src/runtime下的chan.go中。 Channel整体结构图 图源&#xff1a;https://i6448038.github.io/2019/04/11/go-channel/ Channel结构体 type hchan struct {qcount uint // total data in the queuedataqsiz uint // si…

lightGBM的学习整理

执行步骤 1、初始化&#xff0c;选择一个初始模型&#xff0c;通常是一个常数&#xff0c;比如分类问题中内的类别概率的先验值&#xff0c;回归问题中的目标变量的平均值。 2、训练决策树&#xff0c;对于每一轮迭代&#xff0c;计算当前模型的梯度&#xff08;损失函数的负…

外汇天眼:投其所好精设“杀猪盘”!假冒平台诈骗360万!

近年来&#xff0c;愈来愈多民众有感于物价急速上涨&#xff0c;为了避免因为通胀而导致资产持续缩水&#xff0c;纷纷开始寻找可以获利的投资机会&#xff0c;没想到却因此落入诈骗集团的陷阱&#xff0c;蒙受极大的财务损失。 最近外汇天眼就收到一位受害者针对IMX的爆料&…

亚信安慧AntDB:数据库自主创新的缩影

AntDB作为一款自主研发的数据库系统&#xff0c;具备了国产化升级改造的核心能力。这款数据库系统通过不懈努力和持续探索&#xff0c;实现了从跟随他人到引领潮流的华丽转身。AntDB不仅仅是一种技术产品&#xff0c;更是体现了自主研发能力的缩影&#xff0c;体现了科技企业在…

操作系统---第一课

操作系统&#xff1a; 控制和管理整个计算机系统的硬件和软件资源。向上层提供方便易使用的服务&#xff0c;是最接近硬件的一层软件。 功能&#xff1a;文件管理&#xff0c;存储器管理&#xff0c;设备管理&#xff0c;处理机管理。 操作系统的四个特征&#xff1a; 并发 &…

2024最新Android大厂面试真题大全,推荐学习

历时半年&#xff0c;我们终于整理出了这份市面上最全面的最新Android面试题解析大全&#xff01; 章节目录 第一章&#xff1a;Android 基础 面试题 第二章&#xff1a;Android 高级 面试题 第三章&#xff1a;开源框架实战面试解析 第四章&#xff1a;Java 面试题 第五章&a…

Sqli-labs靶场第15关详解[Sqli-labs-less-15]自动化注入-SQLmap工具注入

Sqli-labs-Less-15 #自动化注入-SQLmap工具注入 SQLmap用户手册&#xff1a;文档介绍 - sqlmap 用户手册 由于这题是post请求&#xff0c;所以先使用burp进行抓包&#xff0c;然后将数据包存入txt文件中打包 用-r 选择目标txt文件 python sqlmap.py -r data.txt -current-db…

算法练习:双指针

目录 1. 双指针1.1 移动 "0"1.2 复写 "0"1.3 快乐数&#xff08;快慢指针&#xff09;1.4 盛水最多的容器&#xff08;单调性原则&#xff09;1.5 有效三角形个数1.6 两个数之和1.7 三数之和1.8 四数之和 1. 双指针 1.1 移动 “0” 题目信息&#xff1a; …

1.4 简述“分组卷积”及其应用场景

1.4 简述“分组卷积”及其应用场景 普通卷积&#xff1a;在普通的卷积操作中&#xff0c;一个卷积核对应输出特征图的一个通道&#xff0c;而每个卷积核又会作用在输入特征图的所有通道上(即卷积核的通道数等于输入特征图的通道数)&#xff0c;因此最终输出特征图的每个通道都…

算法简单试题

一、选择题 01.一个算法应该是( B ). A.程序 B.问题求解步骤的描述 C.要满足五个基本特性 D.A和C 02&#xff0e;某算法的时间复杂度为O(n)&#xff0c;则表示该…

【C++实战项目】Date日期类 --- 运算符重载的深入探索

&#x1f4f7; 江池俊&#xff1a;个人主页 &#x1f525; 个人专栏&#xff1a;✅C那些事儿 ✅Linux技术宝典 &#x1f305; 此去关山万里&#xff0c;定不负云起之望 文章目录 引言一、为什么需要运算符重载&#xff1f;二、日期类的实现1. 基本框架2. 预备工作3. Date 类…

JimuReport积木报表 v1.7.1 版本发布,低代码报表工具

项目介绍 一款免费的数据可视化报表&#xff0c;含报表和大屏设计&#xff0c;像搭建积木一样在线设计报表&#xff01;功能涵盖&#xff0c;数据报表、打印设计、图表报表、大屏设计等&#xff01; Web 版报表设计器&#xff0c;类似于excel操作风格&#xff0c;通过拖拽完成报…

2024年冲刺年薪40w,Android岗面试

一个程序员&#xff0c;如果不想35 岁被淘汰&#xff0c;请把它当成一种信仰&#xff01; 25岁&#xff0c;一个北漂程序员&#xff0c;入职三年&#xff0c;Android中级工程师&#xff0c;月薪15k&#xff0c;965的工作经常干成996&#xff0c;比起老家的同龄人&#xff0c;我…

掘根宝典之C语言文件操作(fgetc,fputc,fscanf,fprintf,fread,fwrite,feek,ftell,fwind,feof)

1. 为什么使⽤⽂件&#xff1f; 如果没有⽂件&#xff0c;我们写的程序的数据是存储在电脑的内存中&#xff0c;如果程序退出&#xff0c;内存回收&#xff0c;数据就丢失 了&#xff0c;等再次运⾏程序&#xff0c;是看不到上次程序的数据的&#xff0c;如果要将数据进⾏持久…

【C/C++】结构体内存对齐 ----- 面试必考(超详细解析,小白一看就懂!!!)

目录 一、前言 二、引出 ---- 结构体内存对齐 &#x1f34e;结构体偏移量计算&#xff1a;offsetof &#x1f95d;结构体内存对齐详解 &#x1f4a6;规则介绍&#xff08;重点&#xff01;&#xff01;&#xff09; &#x1f4a6;例题解析 三、习题演练 &#x1f34d;练习① …

Spring Cloud 面试题及答案整理,最新面试题

Spring Cloud中断路器的原理及其作用是什么&#xff1f; Spring Cloud断路器的原理和作用基于以下几个关键点&#xff1a; 1、故障隔离机制&#xff1a; 在微服务架构中&#xff0c;断路器作为一种故障隔离机制&#xff0c;当某个服务实例出现问题时&#xff0c;断路器会“断…

Docker知识点总结二

四、 Docker 架构 Docker使用客户端-服务器(C/S)架构模式&#xff0c;使用远程API来管理和创建Docker容器。 介绍&#xff1a; 1、Docker的客户端client&#xff0c;我们在命令行发送一些信息(命令)给Docker服务端。2、中间这个就是Docker的服务端&#xff0c;在这个服务端里面…