第二章、Android UI 布局 - Android移动开发基础笔记
目录
前言
一、布局的创建
二、布局的类型
1、线性布局
2、相对布局
3、帧布局
4、表格布局
5、绝对布局
三、总结
四、尾注
前言
UI 全名为 User Interface ,UI界面是人与手机之间数据传递、信息交互的重要媒介和对话窗口,是Android 系统的重要组成部分。
一、布局的创建
在 Android 程序中界面是通过布局文件设定的,在每个应用程序创建时会默认包含一个主界面布局,该布局位于 res/layout 目录下。添加布局的过程为,选中 layout 文件夹并单击右键,依次选中【New】➡【XML】➡【Layout XML File】选项,如图所示:
单击该选项后会弹出 New Android Component 界面,Layout File Name 是填写文件名称,而Root Tag 是表示根元素标签,默认为 LinearLayout(线性布局),单击【Finish】按钮即可完成创建布局。
二、布局的类型
布局 | 标签 | 特点 |
---|---|---|
线性布局 | LinearLayout |
以水平或垂直方向排列 |
相对布局 | RelativeLayout |
通过相对定位排列 |
帧布局 | FrameLayout |
开辟空白区域,帧里的控件(层)叠加 |
表格布局 | TableLayout |
表格形式排列 |
绝对布局 | AbsoluteLayout |
通过x,y坐标排列 |
1、线性布局
线性布局(LinearLayout)主要以水平或垂直方式来显示界面中的控件。当控件水平排列时,显示顺序依次为从左到右,当控件垂直排列时,显示顺序依次为从上到下。
在线性布局中,有一个重要的属性 orientation ,用于控制控件的排列方向,该属性有 vertical 和 horizontal (默认)两个值,其中vertical 表示线性布局垂直显示,horizontal 表示线性布局水平显示。
注意:
当控件水平排列时,控件属性layout_width只能设置为wrap_content(包裹内容让当前控件根据控件内容大小自动伸缩),否则其余控件会被挤出屏幕右侧不显示。同理,如果控件垂直排列也会出现同样情况。
当控件水平排列时,如果控件未占满一行,会留有空白区域,这样既不美观又浪费空间。此时,可以利用 layout_weight 属性解决这个问题,该属性被称为权重,通过比例调整布局中所有控件的大小。
当控件使用权重属性时,布局宽度属性值通常设置为 0。
2、相对布局
相对布局(RelativeLayout)是通过相对定位的方式指定控件位置,即以其它控件或父容器为参照物,摆放控件位置。在设计相对布局时要遵循控件之间的依赖关系,后放入控件的位置依赖于先放入的控件。
以下是相对布局控件属性以及功能描述。
控件属性 | 功能描述 |
---|---|
android:layout_centerInParent | 设置当前控件位于父布局的中央位置 |
android:layout_centerVertical | 设置当前控件位于父布局的垂直居中位置 |
android:layout_centerHorizontal | 设置当前控件位于父控件的水平居中位置 |
android:layout_above | 设置当前控件位于某控件上方 |
android:layout_below | 设置当前控件位于某控件下方 |
android:layout_toLeftOf | 设置当前控件位于某控件左侧 |
android:layout_alignParentTop | 设置当前控件停靠于布局顶端 |
android:layout_alignParentLeft | 设置当前控件停靠于布局左侧 |
android:layout_alignParentRight | 设置当前控件停靠于布局右侧 |
android:layout_alignParentBottom | 设置当前控件停靠于布局底端 |
android:layout_alignTop | 设置当前控件的上边界与某控件的上边界对齐 |
android:layout_alignBottom | 设置当前控件的下边界与某控件的下边界对齐 |
android:layout_alignLeft | 设置当前控件的左边界与某控件的左边界对齐 |
android:layout_alignRight | 设置当前控件的右边界与某控件的右边界对齐 |
控件属性 | 功能描述 |
---|---|
android:layout_marginTop | 设置当前控件上边界与某控件的距离 |
android:layout_marginBottom | 设置当前控件底边界与某控件的距离 |
android:layout_marginLeft | 设置当前控件左边界与某控件的距离 |
android:layout_marginRight | 设置当前控件右边界与某控件的距离 |
布局属性 | 功能描述 |
---|---|
android:paddingTop | 设置布局顶部内边距的距离 |
android:paddingBottom | 设置布局底部内边距的距离 |
android:paddingLeft | 设置布局左边内边距的距离 |
android:paddingRight | 设置布局右边内边距的距离 |
android:padding | 设置布局四周内边距的距离 |
相关知识:控件的单位
为了让程序拥有更好的屏幕适配能力,在指定控件和布局宽高时应尽量避免将控件宽高设置为固定值。但特殊情况下,需要使用指定宽高值时,可以选择使用以下四种单位:
- px:像素,即在屏幕中可以显示最小元素单位。
- pt:磅数,一磅等于1/72英寸,一般pt会作为字体的单位来显示。
- dp:基于屏幕密度的抽象单位。不同设备有不同的显示效果,根据设备分辨率的不同来确定控件的尺寸。
- sp:可伸缩像素,采用与dp相同的设计理念,推荐设置文字大小时使用。
3、帧布局
帧布局(FrameLayout)为每个加入其中的控件创建一个空白区域(称为一帧,每个控件占据一帧)。所有控件都默认显示在屏幕左上角,按照先后放入的顺序重叠摆放。帧布局的大小由内部最大控件的决定。
布局属性 | 功能描述 |
---|---|
Android:forground | 设置帧布局容器的前景图像 |
Android:forgroundGravity | 设置容器的前景图像显示位置 |
4、表格布局
表格布局(TableLayout)是以表格形式排列控件的,通过行和列将界面划分为多个单元格,每个单元格都可以添加控件。
表格布局需要和TableRow配合使用,每一行都由TableRow对象组成,因此TableRow的数量决定表格的行数,而表格的列数是由包含最多控件的TableRow决定的,例如第1个TableRow有两个控件,第2个TableRow有三个控件,则表格列数为3。
布局属性 | 功能描述 |
---|---|
android:stretchColumns | 设置该列被拉伸,列号从“0”开始 |
android:shrinkColumns | 设置该列被收缩,列号从“0”开始 |
android:collapseColumns | 设置该列被隐藏,列号从“0”开始 |
控件属性 | 功能描述 |
---|---|
android:layout_column | 设置该单元显示位置 |
android:layout_span | 设置该单元格占据几列,默认为1列 |
5、绝对布局
绝对布局(AbsoluteLayout)是通过指定x、y坐标来控制每一个控件位置的。
布局属性 | 功能描述 |
---|---|
android:layout_x | 设置 x 坐标 |
android:layout_y | 设置 y 坐标 |
三、总结
本篇文章主要介绍了 Android 中的布局创建以及常用的布局类型等知识。
四、尾注
希望这篇文章对你有所帮助,记得转载、点赞、收藏,支持一下,小编将会持续更新哦
第二章、Android UI 布局 - Android移动开发基础笔记相关推荐
- Android UI布局之线性布局LinearLayout
Android UI 布局 线性布局 线性布局 activity_main.xml <?xml version="1.0" encoding="utf-8" ...
- ASP.NET3.5 企业级项目开发 -- 第二章 数据访问层(DAL)的开发
为什么80%的码农都做不了架构师?>>> ASP.NET3.5 企业级项目开发 -- 第二章 数据访问层(DAL)的开发 前言:本篇主要讲述数据访问层的开发, ...
- 第4章 Linux下的C语言开发基础
第4章 Linux下的C语言开发基础 4.1 C语言开发的基本步骤 C语言源程序开发的基本步骤如下: 根据项目需求划分功能模块 编辑.利用文本编辑器vi或gedit编写C源程序并保存,文件的后缀为.c ...
- 第二章 物理层 2,3 数据通信基础知识 [计算机网络笔记]
第二章 物理层 2,3 数据通信基础知识 本笔记参考书目: 计算机网络(第8版)谢希仁 2021王道计算机网络视频公开课 本节重点: (了解即可) 通信方式:单工/半双工/全双工 传输方式:并行/串行 ...
- 第二章 物理层 1 物理层的基本概念 [计算机网络笔记]
第二章 物理层 1 物理层的基本概念 本笔记参考书目: 计算机网络(第8版)谢希仁 2021王道计算机网络视频公开课 本节重点: 物理层功能和作用(了解名词即可) 转载请注明文章来源! 物理层接口特性 ...
- 【MC 网易-我的世界-mod开发基础笔记】 --- 创建第一个空白Mod
目录 创建Mod文件夹 构建Mod的基本目录结构 构建行为包基本结构 构建脚本文件夹基本结构 构建 mod 启动入口脚本 构建资源包基本结构 构建国际化文件基本结构 自定义物品配置中文名称 自定义方块 ...
- 【MC 网易-我的世界-mod开发基础笔记】 --- 运行测试第一个空白Mod
这里写目录标题 前提 创建 空白世界,并在此世界中添加第一个空白的mod 前提 在[MC 网易-我的世界-mod开发基础笔记] - 创建第一个空白Mod 创建完成之后,进行测试. 创建 空白世界,并在 ...
- Cesium开发基础笔记总结(加载影像、加载地形数据、加载矢量)
Cesium开发基础笔记总结 学习总结于GIS李胜老师博客 Cesium开发基础01加载影像数据 加载影像数据 Cesium中的影像图层类: 无论是二维地图还是三维地图,如果缺少了底图影像或电子地图, ...
- android ui布局适配,Android适配全面总结(一)----屏幕适配
前言 Android适配是一个老生常谈的问题,很多程序员觉得很恶心,不愿意做适配,但是又不得不做.然后老板说,这位兄弟,做好了,今天晚饭给你加个鸡腿,然后程序员开始找各种资料,忙活起来了,最终在苦逼的 ...
- android 模板 ui布局,Android UI布局
一.线性布局-LinearLayout(至上而下布局) 其中 android:orientation="vertical"意思为垂直 方向的线性布局,此处的"vertic ...
最新文章
- Linux下的阻塞(Block)
- AR/VR逐渐回暖 联合安防步入未来
- android 按下home键执行什么,Android下得到Home键按下的消息
- Bit-Z携手Bit-MY落户马来西亚 已获得经营牌照
- mysqlsla日志分析工具
- ffmpeg builds by zeranoe_FFmpeg
- BugkuCTF-MISC题convert
- Markdown入门教程
- 这辈子最难忘的一顿饭是什么?
- Python | Web Crawler
- Win10s分屏设置
- vue项目中gojs最新V2.2.5版本去除水印
- Node抓取有道精品课视频
- 基于 Metal 框架的 GPU 计算
- python编制剪刀石头布游戏_Python编辑剪刀石头布游戏
- STC89C52RC特点及引脚介绍
- 基于laravel免费开源CMS推荐
- LearnGL - 11.1 - 实现简单的Gouraud光照模型 dot 点积/点乘的作用
- ERP :金蝶软件财务快捷键
- S60手机通过JoikuSpot实现无线热点功能
热门文章
- rust使用vec在遍历时删除元素
- 视频教程-Photoshop(PS)软件基础入门-Photoshop
- 从PhotoShop入门学习深入了解设计原则
- SwiftUI 内功教程之Closures 09 闭包捕捉价值Capturing Values及经典用法
- 关于IDEA中使用git更新代码,会覆盖掉未提交的新代码解决问题
- 性能魔方七剑下天山之莫问剑:全球首创智能评测
- word中设置页眉页脚奇偶页不同,页脚为页码时偶数页不显示一招解决
- TSW(Tencent Server Web)源码阅读指南
- 环信服务器发送消息,环信服务器发送消息
- 批处理文件rd \s\q **是什么意思?