Android 学习笔记: 三种基本布局的使用介绍

news2024/10/6 18:16:18

一、概述

布局是一种可用于放置很多控件的容器,它可以按照一定的规律调整内部控件的位置,从而编写出精美的界面。

布局的内部除了放置控件外,也可以放置布局。

三种常用布局

  • LinearLayout
  • RelativeLayout
  • FrameLayout

二、 LinearLayout

线性布局,是一种非常常见的布局。这个布局会将它所包含的控件在线性方向上依次排列。

1. 设置线性方向

在 Activity 对应的 XML 文件,在 android.widget.LinearLayout 标签内设置线性方向

水平方向

android:orientation="horizontal"

垂直方向

android:orientation="vertical"

2. 布局内控件的属性 - android:layout_gravity

android:layout_gravity 用于指定控件在布局中的对齐方式

  • LinearLayout 的排列方向是 horizontal 时,只有垂直方向上的对齐方式才会生效。
  • LinearLayout 的排列方向是 vertical时,只有水平方向上的对齐方式才会生效。

在这里插入图片描述

3. 布局内控件的属性 - android:layout_weight

这个属性允许我们使用比例的方式来指定控件的大小,它在手机屏幕适配性方面可以起到非常重要的作用。

3.1 我们要实现的效果

两个按键在宽度上平分屏幕宽度。

在这里插入图片描述

3.2 实现方法

  • 按键上层布局设为 线性布局 LinearLayout
  • 线性布局 指定为水平排列:android:orientation="horizontal"
  • 两个按键的 的 layout_weight 属性分别设置为1 : ndroid:layout_weight="1"
  • 两个按键的宽度设置 为 0dp ,android:layout_width="0dp" 。此时控件的宽度不应该再由layout_width 决定了,这里指定为 0dp 是一种比较规范的写法。

3.3 实现原理

系统会先把 LinearLayout 下所有控件指定的 layout_weight 值相加,得到一个总值,然后每个控件所占大小的比例就是用该控件的layout_weight 值除以 刚才算出的总值。

三、RelativeLayout

RelativeLayout 又称为相对布局,也是一种非常常见的布局。和LinearLayout 的排列规则不同,RelativeLayout 显得更加随意,它可通过相对定位的方式让控件出现在布局的任意位置。

1. 相当于父布局定位

1.1 我们要实现的效果

四个按键,分别显示在上层布局的四个角。

在这里插入图片描述

1.2 实现方法

  • 按键上层布局设为相对布局:RelativeLayout

  • 按键1:定位在父布局左上

    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    
  • 按键2:定位在父布局右上

    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    
  • 按键3:定位在父布局左上

    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    
  • 按键4:定位在父布局右下

    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    

2. 相对于控件定位

相对指定控件的方向,定位新控件

2.1 要实现的效果

在这里插入图片描述

2.2 实现方法

  • 按键上层布局设为相对布局:RelativeLayout

  • 按键3:定位父布局中间

    android:layout_centerInParent="true"
    
  • 按键1:定位在btn3左上

    android:layout_above="@id/button3"
    android:layout_toLeftOf="@id/button3"
    
  • 按键2:定位在btn3右上

    android:layout_above="@id/button3"
    android:layout_toRightOf="@id/button3"
    
  • 按键4:定位在btn3左下

    android:layout_below="@id/button3"
    android:layout_toLeftOf="@id/button3"
    
  • 按键5:定位在btn3右下

    android:layout_below="@id/button3"
    android:layout_toRightOf="@id/button3"
    

三、FrameLayout

FrameLayout 又称为帧布局,它相比于前面两种布局简单很多,因此它的应用场景少了很多。这种布局没有丰富的定位方式,所有的控件都会默认摆放在布局的左上角

1. 体验FrameLayout 默认效果

1.1 UI 定义

  • 设置为 FrameLayout
  • 布局内有一个 Button,一个 TextView

1.3 显示效果

在这里插入图片描述

2. 布局下控件使用 layout_gravity 属性

2.1 实现代码如下

<Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Btn1"
        android:layout_gravity="left"
        />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello world! Hello world!"
        android:layout_gravity="right"
        />

2.3 实现效果如下

在这里插入图片描述

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

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

相关文章

列举几个常用的淘宝API接口(详情页面数据接口,评论接口,关键词搜索接口,店铺所有商品接口)

目前各大电商平台都有自己的开放平台&#xff0c;通过API接口开放本电商平台的相关数据和功能&#xff0c;以自由开放的姿态来占领更多的市场份额。也让更多的人能来电商市场分得一杯羹。 下面列举几个常用的API接口&#xff0c;量大择优hui&#xff0c; 注册key和secret可测…

基于SpringBoot+Vue的校园博客系统设计与实现

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

mysql将某一列的数据根据固定字符拆分后判断存不存在

如果数据库的某个字段在存储时是用的逗号分割&#xff0c;如下图所示&#xff1a; 例如这张表中有一个字段是用的逗号分割&#xff0c;其实这种设计违背了数据库三范式设计原则&#xff0c;如何判断这一列的值包不包含某一个值&#xff1f; 方法一 用mysql自带的字符串函数去判…

浅析路灯电击安全问题与选型

摘要&#xff1a;介绍了路灯设计安全防护的几个要点&#xff0c;简单分析了路灯低压配电接地系统形式TN-S和TT的选择及剩余电流保护装置在路灯设计中设置的必要性&#xff0c;列举了路灯灯具和灯杆的一些安全技术质量要求。 关键词&#xff1a;路灯配电系统接地形式&#xff1b…

ModaHub魔搭社区:AI原生云向量数据库Zilliz Cloud与 LangChain 集成搭建智能文档问答系统

目录 准备工作 主要参数 准备数据 开始提问 本文将演示如何使用 Zilliz Cloud 和 LangChain 搭建基于大语言模型(LLM)的问答系统。在本例中,我们将使用一个 1 CU 的 Cluster,还将使用 OpenAI 的 Embedding API 来获取指定文本的向量表示。现在就让我们开始吧。 准备工作…

谈谈对SpringMVC的理解

1、SpringMVC是属于SpringFramework生态里面的一个模块&#xff0c;它是在Servelet基础上构建的&#xff0c;并且使用了MVC模式设计的一个Web框架&#xff1b; 2、它的主要目的是为了简化传统模式下的Serveletjsp的开发模式&#xff0c;其次SpringMVC的架构模式是对于Java的web…

基于CrowdHuman数据集的高精度行人检测系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于CrowdHuman数据集的高精度行人检测系统可用于日常生活中检测与定位行人目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的行人目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型训练…

计组 第四章 错题

4.1 13 汇编指令能看到什么 II 体系结构没有变 小端法

# Java 并发编程的艺术(三)

Java 并发编程的艺术&#xff08;三&#xff09; 文章目录 Java 并发编程的艺术&#xff08;三&#xff09;Java 内存模型Java 内存模型的基础Java 内存模型的抽象结构从源代码到指令序列的重排序 重排序happens-beforeJMM 的设计happens-before 的定义 Java 中的锁Lock 接口代…

Java零基础入学,你应该了解什么

最近很多人问我想学Java但是一点基础没有&#xff0c;网上看了一堆学习线路图还是无从下手。今天耗时3小时整理了一套保姆级的Java入门教程&#xff0c;建议收藏按照线路图一点点学习。 一、Java的概况 Java是1995年6月美国Sun公司推出的计算机语言。Java支付是James Gosling…

java动态导出excel头

java动态导出excel头 java根据动态头导出excel文件一、需求背景1、调用接口将表头传给给后端2、请求结果展示3、核心代码1、工具类&#xff0c;注意异常抛出类如报错&#xff0c;需自定义异常类2、标题设置类3、单元各简单设置类4、controller接收参数 java根据动态头导出excel…

大势Inside |《倾斜摄影测量实景三维建模技术规程》发布

2023年6月21日&#xff0c;由广西壮族自治区自然资源产品质量检验中心、广西科学院、武汉大学提出&#xff0c;武汉大势智慧科技有限公司、武汉大学、广西科学院等27家单位起草的广西人工智能学会团体标准《倾斜摄影测量实景三维建模技术规程》正式发布。 此前&#xff0c;广西…

今天给大家分享几款非常实用的小工具

在当今数字化的时代&#xff0c;我们离不开各种智能设备和应用程序。然而&#xff0c;有时候我们可能会感到需要一些简单而实用的小工具来帮助我们更高效地完成日常任务或提升生活品质。今天我将与大家分享几款非常实用的小工具&#xff0c;这些工具可以在我们的生活中发挥积极…

Vue3+ElementPlus el-tree递归获取当前选中节点的所有子节点ID (适用所有场景)

点击节点触发两遍此方法问题 将@check-change改成@check即可~ 然后说下选中当前节点去获取其节点下的所有子节点的ID问题,网上搜了许多没有合适自己的方法,项目需求是单选,用了父子不关联的方法实现的单选,需要做下控制就是父节点不允许点击的情况下的子节点也不允许点击…

程序员如何高质量重构代码?

有道无术&#xff0c;术尚可求也&#xff0c;有术无道止于术。你好&#xff0c;我是程序员雪球&#xff0c;今天和你聊聊程序员重构代码那些事。 程序员重构代码的重要性不言而喻&#xff0c;但如何进行有效的重构呢&#xff1f;下面是一些建议和指导。 为什么要重构&#xff…

宝塔安装勾股OA系列服务

勾股oa地址 勾股OA办公系统—开源的OA办公系统 一、服务器配置 二、安装宝塔 1.下载宝塔面板、设置宝塔面板、增加网站。 yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec 根据提示…

Elasticsearch 倒排索引原理

看下面这个表格里的文档内容&#xff1a; 如果我这时候想要在这么多文档中查找带有 比亚迪 的我要怎么查&#xff0c;传统这个查询里面我想查这个比亚迪的话。就是先在文档1里面搜索一下有没有 比亚迪&#xff0c;没有&#xff0c;我在到文档2中查找比亚迪&#xff0c;还是没有…

go-zero系列-限流(并发控制)

参考文章&#xff1a;https://go-zero.dev/docs/tutorials/service/governance/limiter 步骤&#xff1a; 1、压测工具hey下载安装&#xff1a; go install github.com/rakyll/hey (会安装到GOPATH/bin目录下)2、在yaml配置文件中加入&#xff1a; #最大连接数 MaxConns: 10…

数字化时代:虚拟数字人的智能进化与生活变革

我们需要实现对人工智能的有效监管。政府应该与科技公司合作&#xff0c;建立监管框架&#xff0c;确保人工智能的发展能够在保护人类利益的基础上进行。人工智能的快速发展带来了巨大的机遇&#xff0c;但同时也伴随着一些潜在的风险。如果没有适当的监管措施&#xff0c;人工…

【华为OD机试】完全二叉树非叶子部分后序遍历【2023 B卷|200分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述: 给定一个以顺序储存结构存储整数值的完全二叉树序列(最多1000个整数), 请找出此完全二叉树的所有非叶子节点部分,然后采用后序遍历方式将此部分树(不包含叶子)输出。 1、只有一个…