Android开发--Lesson01--页面布局

news/2025/3/17 5:01:00/文章来源:https://www.cnblogs.com/5ran2yl/p/18774177

一.View视图

在Android开发中所有的UI元素都是由View和ViewGroup构建而成的。ViewGroup作为一个容器既可以装载View视图空间,同时也可装载ViewGroup。即一种布局可以嵌套另一种布局。

二.ViewGroup 

RelativeLayout 

RelativeLayout是Android中一种非常灵活的布局方式,它允许子视图根据彼此之间的相对位置或是相对于父容器的位置进行排列

标签格式如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center">
</RelativeLayout>

 

其中:

  • android:layout_width="match_parent" :宽度为父类的最大宽度;即手机的宽度
  • android:layout_height="match_parent":长度为父类的最大长度,即手机的长度
  • android:gravity="center":指定视图内容在其容器为居中对齐

LinearLayout

  1. 线性排列:LinearLayout 可以按照水平(horizontal)或垂直(vertical)方向来排列其子视图。通过设置 android:orientation 属性为 horizontalvertical 来指定排列方向,默认是水平方向。

  2. 权重分配(Weight):通过使用 android:layout_weight 属性,可以为子视图分配额外的空间。这在需要按比例分配屏幕空间时非常有用。例如,在一个水平的 LinearLayout 中,如果两个子视图的权重都设为 1,则它们将平分可用宽度。

  3. 简单易用:由于其直接和直观的布局方式,LinearLayout 非常适合用于创建简单的界面或者作为复杂布局的一部分。它的学习曲线低,容易上手。

标签格式如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/main"android:layout_width="match_parent"android:layout_height="match_parent"></LinearLayout>

 

TableLayout

TableLayout 是 Android 中用于以表格形式排列子视图的布局管理器。它允许开发者通过行和列的形式来组织界面元素,类似于 HTML 中的表格。

  1. 表格结构:TableLayout 通过 TableRow 来定义表格中的行,每个 TableRow 可以包含一个或多个视图作为单元格。这些视图在一行中从左到右依次排列。

  2. 灵活的列数:每行(TableRow)可以有不同的列数,不需要所有行都具有相同的列数。这意味着某些行可以比其他行更宽或者更窄,根据内容自动调整。

  3. 隐藏列:可以通过设置 android:collapseColumns 属性来指定哪些列应该被隐藏。这对于创建响应式设计非常有用,在不同设备上显示不同的信息量。

标签格式如下:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/main"android:layout_width="match_parent"android:layout_height="match_parent"android:stretchColumns="2"><!--设置从第三列开始拉伸--><TableRow> </TableRow><!--一行-->
</TableLayout>

 

FrameLayout

FrameLayout 是 Android 中一种非常基础且灵活的布局管理器,主要用于在其内部放置一个单一视图或以堆叠的方式放置多个视图。

  1. 简单性:FrameLayout 的设计初衷是显示单个视图,因此它非常简单直接。它的所有子视图默认被放置在容器的左上角(即相对于 FrameLayout 的 (0,0) 坐标位置)。

  2. 视图堆叠:如果 FrameLayout 包含多个子视图,这些视图会按照它们在 XML 文件中定义的顺序依次堆叠。后添加的视图位于先前添加的视图之上,形成覆盖效果。

标签格式如下:

<FrameLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"></FrameLayout>

 

ConstraintLayout

新建的布局默认就是约束布局

ConstraintLayout 是 Android 中一种高度灵活且强大的布局管理器,旨在帮助开发者创建复杂的用户界面,同时减少布局嵌套的层级。以下是 ConstraintLayout 的一些主要特点:

  • 双向依赖:每个视图可以通过定义与其它视图或父容器边缘的约束关系来确定其位置和大小。这包括水平、垂直方向上的约束。

  • 多种约束类型:

    • 相对位置约束:例如,一个视图可以设置为相对于另一个视图的左侧、右侧、顶部或底部。

    • 基线对齐:对于文本视图,可以基于文本基线进行对齐。

    • 比例尺寸:通过设置宽度或高度的比例值(如 0dp 和 app:layout_constraintDimensionRatio),可以实现自适应尺寸。

标签格式:

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"></androidx.constraintlayout.widget.ConstraintLayout>

 

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

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

相关文章

第十八届全国大学生信息安全竞赛暨第二届“长城杯”铁人三项赛web方向部分wp

第十八届全国大学生信息安全竞赛暨第二届“长城杯”铁人三项赛web方向部分wp hello_web查看源代码发现有两个文件,访问一下Tips是phpinfo 里面可以看到disable_functions hackme.php中$lapUCm=urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%75%71%79%2A6%6C%…

使用WLAN接口将温度和相对湿度发送到家庭网络web服务器

在本文中,我想利用WLAN接口,为家庭网络中的web服务器提供温度和相对湿度。但是,我将使用物有所值的DHT20传感器和带有SH1106驱动IC的1.3英寸OLED,以尽量减少重复。 但首先是树莓派Pico W的引脚图,以及树莓派Pico和Pico W的区别:虽然外形尺寸和引脚(很大程度上)保持不变,…

【水】洛谷 P3913 (待续)

今天NaN在刷水题时碰到这么一道题:洛谷P3913 https://www.luogu.com.cn/problem/P3913 代码的思路特别简单:用全部格子数 - 没被車侵占的行数 \(\times\) 列数即可. code void solve() {cin >> n >> k;g = h = n;for (ll i = 1; i <= k; i++){cin >> x …

web77笔记(POST+FFI)

web77 命令执行最后一题,php7.4 FFI,php7.4以上才有 https://www.php.net/manual/zh/ffi.cdef.php https://www.php.cn/php-weizijiaocheng-415807.html $ffi = FFI::cdef("int system(const char *command);");//创建一个system对象 $a=/readflag > 1.txt;//没…

day:22 python函数——介绍及自定义函数运用

一.函数的定义 函数是组织好,可以重复使用,用来实现单一,或者关联功能的代码段 二.pycharm中运用的结构三.函数的优点? a.降低代码的冗余 b.增加代码的复用性,提高开发效率 c.提高程序的拓展性 d.把代码片段放在函数当中 四.定义函数 (1)自定义函数 (一)自定义函数 a.函数格式…

英语单词音标重读符号读法作用

比如explicit,重读的是`后面的第一个元音即i

量子网络操作系统 QNodeOS 资料收集

2025年3月14日,通过科技日报的报道知道了这个量子计算领域的重大突破 —— 全球首个量子网络操作系统 QNodeOS 问世。欧洲的量子互联网联盟(QIA)的研究人员2025年3月12日在《自然》(Nature)杂志上发表了论文 An operating system for executing applications on quantum n…

Typora的基本的一些使用用法

markdown 标题 二级标题 (在最前面两个#号加空格) 三级标题 (在最前面三个#号加空格) 字体 Hello,World!(粗体:两边各两个星号) Hello,World!(斜体:两边各一个星号) Hello,World!(粗体加斜体:两边各三个星号) Hello,World!(删除体:两边各两个波浪号) 引用(大于加…

http--nodejs原生web服务

创建http服务const http = require(node:http) const url = require(node:url)http.createServer((req, res) => {}).listen(98, () => {console.log(server is running on port 98) }) 区分请求方法 例如常见的 POST、GET req表示前端的入参(请求参数)。 res 表示后…

Windows server 中 静默安装SQL SERVER 数据库 命令 参数

这篇文章记录一下自己如何在Windows Server Core上安装和配置SQL Server。 安装之前的检查 安装SQL Server的操作系统要求检查 第一件事是需要仔细检查SQL Server的要求文档,这个文档里详细的列出了目前SQL Server支持的操作系统版本,最重要的一条就是检查当你在使用云上的虚…

(3).工厂方法模式

我们接上一个模式的实例: (1).创建水果接口 IFruit:1 namespace 工厂方法模式2 {3 public interface IFruit4 {5 /// <summary>6 /// 水果的单价7 /// </summary>8 double Amount { get; }9 10 11 /// <s…

nestjs Provider

Nest 实现了 IoC 容器,会从入口模块开始扫描,分析 Module 之间的引用关系,对象之间的依赖关系,自动把 provider 注入到目标对象以上部分只是简写{provide: AppService,useClass: AppService }两种注入方式构造器注入属性注入全局模块一般来说,我们都是在需要导出的模块的m…