【Android】之【常用布局】

news2025/1/14 18:01:47

一、简介

Android常用布局分别是
1、线性布局LinearLayout
2、相对布局RelativeLayout
3、绝对布局AbsoluteLayout
4、帧布局FrameLayout
5、表格布局TableLayout
6、网格布局GridLayout
7、约束布局ConstraintLayout

二、详解

2.1. LinearLayout (线性布局)

线性布局是一种非常实用的布局。线性布局具有水平方向与垂直方向的两种布局方式。分别通过属性 android:orientation=“vertical” 和 android:orientation=“horizontal” 来设置(默认水平方向)。

android:gravity:内部控件对齐方式,常用属性值有center、center_vertical、center_horizontal、top、bottom、left、right等。
这里要与android:layout_gravity区分开,layout_gravity是用来设置自身相对于父元素的布局。
android:layout_weight:权重,用来分配当前控件在剩余空间的大小。

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="4" />
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="5" />
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="6" />
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="+" />
    </LinearLayout>

2.2 RelativeLayout (相对布局)

RelativeLayout 继承于 android.widget.ViewGroup,其按照子元素之间的位置关系完成布局的,是最灵活也是最常用的一种布局方式。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
    <Button android:id="@+id/btn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_centerHorizontal="true"
        android:text="Button1"/>
    <Button android:id="@+id/btn2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@id/btn1"
        android:layout_above="@id/btn1"
        android:text="Button2"/>
    <Button android:id="@+id/btn3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/btn1"
        android:layout_above="@id/btn1"
        android:text="Button3"/>
    <Button android:id="@+id/btn4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/btn2"
        android:layout_toLeftOf="@id/btn3"
        android:layout_above="@id/btn2"
        android:text="Button4"/>
</RelativeLayout>

2.3. AbsoluteLayout (绝对布局)

采用坐标轴的方式定位控件,通过设置android:layout_x 和 android:layout_y属性,将子元素的坐标位置固定下来,实际应用中,这种布局用的比较少,不利于适配各种屏幕机型。

2.4 TableLayout (表格布局)

表格布局继承自LinearLayout,通过TableRow设置行,列数由TableRow中的子控件决定,直接在TableLayout中添加子控件会占据整个一行。后面我们更多用GridLayout代替TableLayout。

在这里插入图片描述

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:stretchColumns="1"
    android:collapseColumns="2"
    >
 
    <TableRow
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <Button/>
        <Button/>
 
    </TableRow>
    <TableRow
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <Button/>
        <Button/>
        <Button/>
        <Button/>
        <Button/>
    </TableRow>
    <TableRow
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <Button/>
        <Button/>
        <Button/>
        <Button/>
    </TableRow>
</TableLayout>

2.5 GridLayout(网格布局)

作为android 4.0 后新增的一个布局,与前面介绍过的TableLayout(表格布局)其实有点大同小异;可以很方便的设置N行N列。

在这里插入图片描述

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:columnCount="4"
    android:orientation="horizontal"
    android:background="#FF03DAC5"
    >
    <Button android:text="/"
        android:layout_column="3"
        android:backgroundTint="#BEE3CD7D"/>
    <Button android:text="1"
        android:backgroundTint="#BEE3CD7D"/>
    <Button android:text="2"
        android:backgroundTint="#BEE38C7D"/>
    <Button android:text="3"
        android:backgroundTint="#BEE3CD7D"/>
    <Button android:text="*"
        android:backgroundTint="#BE6AE6C9"/>
    <Button android:text="4"
        android:backgroundTint="#BEE38C7D"/>
    <Button android:text="5"
        android:backgroundTint="#BEE3CD7D"/>
    <Button android:text="6"
        android:backgroundTint="#BE6AE6C9"/>
    <Button android:text="-"
        android:backgroundTint="#BEE3CD7D"/>
    <Button android:text="7"
        android:backgroundTint="#BE6AE6C9"/>
    <Button android:text="8"
        android:backgroundTint="#BEE3CD7D"/>
    <Button android:text="9"
        android:backgroundTint="#BEE38C7D"/>
    <Button
        android:layout_gravity="fill"
        android:layout_rowSpan="3"
        android:backgroundTint="#BE6AE6C9"
        android:text="+"
        />
    <Button android:text="0"
        android:layout_columnSpan="2"
        android:layout_gravity="fill"
        android:backgroundTint="#BEE38C7D"/>
    <Button android:text="00"
        android:backgroundTint="#BEE3CD7D"/>
    <Button android:text="="
        android:layout_columnSpan="3"
        android:layout_gravity="fill"
        android:backgroundTint="#BED999E8"/>
</GridLayout>

2.6. FrameLayout (帧布局)

帧布局用于在屏幕上创建一块空白区域,添加到该区域中的每个子控件占一帧,这些帧会一个一个叠加在一起,后加入的控件会叠加在上一个控件上层。因此也可以将FrameLayout称为堆栈布局,或框架布局。
在这里插入图片描述

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:foreground="@mipmap/pic1"
    android:foregroundGravity="left"
    >
   <Button
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:background="#f00"
        />
    <Button
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:background="#0f0"
        />
 
    <Button
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="#00f" />
</FrameLayout>

2.7. ConstraintLayout (约束布局)

ConstraintLayout是Android Studio 2.2中主要的新增功能之一;
ConstraintLayout非常适合使用可视化的方式来编写界面;
ConstraintLayout 可以有效地解决布局嵌套过多的问题。
目前,Android Studio 是 2.2或以上版本默认布局文件首选就是 ConstraintLayout。
基本使用请参考:Android新特性介绍,ConstraintLayout完全解析

三、 参考

  • Android 学习总结–六大常用布局

  • Android基础:Android布局

  • Android六大基本布局详解

  • Android开发之六大常用布局

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

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

相关文章

Rabbit与springboot整合-1

目录 1、整体结构 2、pom引入 3、配置文件 4、代码 公共类 controller类 JSON转换类 监听-接收发送消息类 1、整体结构 2、pom引入 <!--rabbitmq--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-st…

C++引用与引用两大应用场景,临时变量的常性,常引用与权限大小问题

tips 内存栈区的用习惯是先使用高地址&#xff0c;然后使用低地址嘛顺序表数组支持随机下标访问&#xff0c;也是目前已知的仅有的数据结构类当中的话&#xff0c;它不可以不仅可以去定义变量&#xff0c;它也可以定义函数&#xff0c;这个跟c当中的结构体不一样的&#xff0c…

数据结构考研版——队列的配置问题

一、正常配置下的情况 队空状态 frontrear;入队操作 出队操作 队满状态 在正常配置下元素的个数&#xff08;rear>front&#xff09; 当rear<front 综上所述用一个表达式表示&#xff1a;(rear-frontmaxSize)%maxSize 二、非正常配置下的情况1 队空状态 入队操作…

Stable Diffusion-webUI ckpt模型、lora模型的区别和使用

一、常用的两种模型&#xff1a;ckpt和Lora分别是什么&#xff1f;有什么区别&#xff1f; 1、CKPT&#xff08;CheckPoint&#xff09; 经过训练的图片合集&#xff0c;被称作模型&#xff0c;也就是chekpoint&#xff0c;体积较大&#xff0c;一般真人版的单个模型的大小在…

StarRC的妙用

在整个R2G的流程里边&#xff0c;寄生参数抽取&#xff08;StarRC&#xff09;是比较没有存在感的。大部分的时间&#xff0c;工程师们只是用这个工具来刷SPEF。并不会关注太多。这本身其实是一个好事情&#xff0c;反向证明了参数抽取工具的高度稳定性&#xff01; 但是&#…

虚拟数字人的3种驱动方式

虚拟数字人是由计算机程序所构建的具有人类特征的虚拟实体&#xff0c;目前的虚拟数字人经过了三代的更迭&#xff0c;划分每一代更迭的标准则是虚拟数字人的驱动方式。 一、虚拟数字人1.0&#xff1a;动画&CG驱动 虚拟数字人1.0就是目前我们所熟知的&#xff0c;比如&am…

[NOIP2000 提高组] 进制转换

[NOIP2000 提高组] 进制转换 题目描述 我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置为指数,以 10为底数的幂之和的形式。例如 123 可表示为 10^22*10^13*10^0 这样的形式。 与之相似的&#xff0c;对二进制数来说&#xff0c;也可表示成…

运行时内存数据区之执行引擎(二)

JIT编译器 第一种是将源代码编译成字节码文件&#xff0c;然后在运行时通过解释器将字节码文件转为机器码执行。 第二种是编译执行&#xff08;直接编译成机器码&#xff09;。现代虚拟机为了提高执行效率&#xff0c;会使用即时编译技术(JIT,Just In Time)将方法编译成机器 …

北邮22信通:(13)二叉树 书上重要知识点补充 例4.3 统计结点总数 深度和叶子结点数

北邮22信通一枚~ 跟随课程进度每周更新数据结构与算法的代码和文章 持续关注作者 解锁更多邮苑信通专属代码~ 上一篇文章&#xff1a; 下一篇文章&#xff1a; 目录 一.统计结点总个数 二.统计二叉树深度 三.统计叶子结点总数 四.完整代码 4.1测试int存储类型&…

网络原理基础(认识IP地址、子网掩码、端口号、协议、五元组)

文章目录 前言一、网络通信基础1、IP地址2、子网掩码3、端口号4、协议5、五元组 二、协议基础知识1.协议分层2.OSI七层模型3、TCP/IP五层(或四层)模型4、网络设备所在分层5、封装和分用 总结 前言 网络互连的目的是进行网络通信&#xff0c;也即是网络数据传输&#xff0c;更具…

Mac/Linux系统idea启动springboot项目慢;Oracle数据库连接:ORA-21561: OID generation failed

Mac/Linux系统idea启动springboot项目慢;Oracle数据库连接:ORA-21561: OID generation failed 解决方案&#xff1a; 1、终点输入localhost查看&#xff1b;发现我这里是local 2、终点输入cat /etc/hosts查看配置&#xff1b; hosts文件中127.0.0.1的映射是&#xff1a;127…

react 之 useState

参考&#xff1a;https://blog.csdn.net/Ljwen_/article/details/125319191 一、基本使用 useState是 react 提供的一个定义响应式变量的 hook 函数&#xff0c;基本语法如下&#xff1a; const [count, setCount] useState(initialCount)它返回一个状态和一个修改状态的方…

R语言ggplot2 | 绘制随机森林重要性+相关性热图

&#x1f4cb;文章目录 原图复现准备数据集及数据处理构建不同分类随机森林模型的并行计算绘制随机森林变量重要性柱状图计算数据集的相关性热图可视化合并随机森林重要性和热图 附上所有代码 在文献中&#xff0c;我们经常遇到随机森林和相关性热图的组合图片(下图)&#xff0…

LeetCode热题HOT100:76. 最小覆盖子串,84.柱状图中最大的矩形、96. 不同的二叉搜索树

LeetCode 热题 HOT 100 76. 最小覆盖子串 题目&#xff1a;给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串&#xff0c;则返回空字符串 “” 。 注意&#xff1a; 对于 t 中重复字符&#xff0c;我们寻找的子字…

Ubuntu18.04获取root权限并用root用户登录

写在前面&#xff1a;以下步骤中需要在终端输入命令&#xff0c;电脑端查看博客的朋友可以直接复制粘贴到终端&#xff0c;手机端查看的朋友请注意命令里面的空格是必须的&#xff0c;否则运行会出错。 1.为root设置初始密码 &#xff08;1&#xff09;登录系统&#xff0c;打…

【unity实战】随机地下城生成1

先看看最终效果 导入素材 导入房间图片素材,配置图片信息信息 点击sprite Editor,开始切割图片 随机创建基本房间 已一个白底图片模拟房间预设体 思路:建立一个空的 GameObject 用来做创建房间的点,设置坐标(0,0,0)。每创建1个房间之后,随机在上、下、右判断是否有…

python以及PyCharm工具的环境安装与配置

这里以Windows为例 Python的安装 当然是到Python官网下载咯&#xff0c;https://www.python.org/downloads/点我直达&#xff0c;如图&#xff1a; 可以下载最新版本&#xff0c;可以下拉找到之前特定的版本安装&#xff0c;如图&#xff1a; 这里先择的是最新版的进行安装…

leetcode每日一题:链表专题篇第一期(1/2)

&#x1f61a;一个不甘平凡的普通人&#xff0c;日更算法学习和打卡&#xff0c;期待您的关注和认可&#xff0c;陪您一起学习打卡&#xff01;&#xff01;&#xff01;&#x1f618;&#x1f618;&#x1f618; &#x1f917;专栏&#xff1a;每日算法学习 &#x1f4ac;个人…

现在备考2023年5月软考网络工程师时间够吗?

距离2023年5月软考还有1个多月的时间&#xff0c;备考网络工程师的时间是够的&#xff0c;以下是一些备考方法&#xff1a; 1.了解考试内容 在你开始学习考试之前&#xff0c;了解考试的形式和内容是很重要的。这将帮助你把注意力集中在最有可能被测试的领域。你应该复习考试…

Gartner Magic Quadrant for SD-WAN 2022 (Gartner 魔力象限:软件定义广域网 2022)

Gartner 魔力象限&#xff1a;SD-WAN 2022 请访问原文链接&#xff1a;https://sysin.org/blog/gartner-magic-quadrant-sd-wan-2022/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org Gartner 魔力象限&#xff1a;SD-WAN 2022…