上一篇我们对Android常用的组件已经有了一个初步的了解,本篇我们开始了解Android常用的布局方式

什么是布局?怎么去理解布局了?简单的来说,布局就是一种约束,比如你把一堆的东西放到地上,他就是杂乱无章的,如果你把它装到置物箱里,他就能按照箱子的空间形状排列起来,这里,我们可以把箱子理解为一种布局,同样的我们Android界面上的组件要有规律的按照设计师的要求摆放好,就需要一种约束的方式,这种约束就是布局。所以,布局就是一种约束组件排列的方式。

Android目前有7大基本布局
线性布局:LinearLayout
相对布局:RelativeLayout
表格布局:TableLayout
层(帧)布局:FrameLayout
绝对布局:AbsoluteLayout
网格布局:GridLayout
约束布局:ConstraintLayout

我们重点来介绍其中比较常用的几种布局

LinearLayout 线性布局

线性布局是最常用的一种布局方式,也是最简单的布局,通俗一点讲,它是约束里面的组件是按照水平方向排列还是按照垂直方向排列

方向属性设置 android:orientation
horizontal:水平方向
vertical:竖直方向

水平方向排列

垂直方向排列

对齐属性设置 android:gravity
left:左对齐
right:右对齐
top:顶部对齐
bottom:底部对齐
center:居中对齐

左对齐 left

右对齐 right

顶部对齐

底部对齐


居中对齐

RelativeLayout 相对布局

相对布局也是我们常用的布局之一,有时候我们在布局中涉及到多层布局嵌套或者某些复杂的布局关系时,用线性布局就不是那么的方便了,这个时候我们可以考虑用相对布局,相对布局中的元素可以相对父元素或者其他元素的位置去指定自身的位置。

与父组件对齐属性
android:layout_alignParentLeft=“true” 与父组件左对齐
android:layout_alignParentRight=“true” 与父组件右对齐
android:layout_alignParentTop=“true” 与父组件顶部对齐
android:layout_alignParentBottom=“true” 与父组件底部对齐

效果图

居中属性
android:layout_centerVertical=“true” 在相对布局中垂直居中
android:layout_centerHorizontal=“true” 在相对布局中水平居中
android:layout_centerInParent=“true” 在相对布局中水平和垂直都居中

垂直居中

水平居中

水平垂直都居中

根据指定组件定位自身的位置
layout_toLeftOf 控制位置在指定组件的左侧
layout_toRightOf 控制位置在指定组件的右侧
layout_above 控制位置在指定组件的上方
layout_below 控制位置在指定组件的下方
layout_alignTop 控制位置在指定组件的上边界
layout_alignBottom 控制位置在组件的下边界
layout_alignLeft 控制位置在组件的左边界
layout_alignRight 控制位置在组件的右边界

TableLayout 表格布局 GridLayout网格

表格、网格布局一般在实际布局用的比较少,原因是很多时候表格布局我们有很多的其他方案可以代替,而且在数据较多的时候这种布局对于资源的消耗比较,所以不建议用,这里我们就不做介绍,如果你想了解请百度去详细了解

ConstraintLayout 约束布局

ConstraintLayout是一种极其强大也灵活的重要布局,在我们日常界面搭建中经常需要使用它来构建一些复杂的界面UI,它的构建使用方式和RelativeLayout相对布局是非常的相似的,都是利用各种相对位置来实现组件的位置摆放。那这个时候你要问了,既然有了RelativeLayout相对布局了为啥还要弄个ConstraintLayout约束布局出来,不是多此一举吗?当我们的布局页面相对复杂的时候,即使你使用的是相对布局,对性能的消耗也是很高的,这个时候我们在考虑布局的复杂性同时也要兼顾性能的时候就需要用到ConstraintLayout约束布局了,可以说ConstraintLayout是RelativeLayout的升级版。

基本方向约束
app:layout_constraintTop_toTopOf=“” 我的顶部和谁的顶部对齐
app:layout_constraintBottom_toBottomOf=“” 我的底部和谁的底部对齐
app:layout_constraintLeft_toLeftOf=“” 我的左边和谁的左边对齐
app:layout_constraintRight_toRightOf=“” 我的右边和谁的右边对齐
app:layout_constraintStart_toStartOf=“” 我的开始位置和谁的开始位置对齐
app:layout_constraintEnd_toEndOf=“” 我的结束位置和谁的结束位置对齐
app:layout_constraintTop_toBottomOf=“” 我的顶部位置在谁的底部位置
app:layout_constraintStart_toEndOf=“” 我的开始位置在谁的结束为止

基线对齐
有时候我们需要与其他组件的底部基线对齐,就需要使用下面这个属性
app:layout_constraintBaseline_toBaselineOf


角度约束
app:layout_constraintCircle=“” 指定控件id
app:layout_constraintCircleAngle=“” 相对于指定空间的角度(0-360)
app:layout_constraintCircleRadius=“” 到指定空间中心的距离


好了,对于Android的基本布局使用我们就先介绍到这里,这里我们都只是了解了一些布局的基本使用属性,更多更详细的属性需要我们自己主动的去了解,这一期我们就到这里,下期再见啦!

Android实战开发-Kotlin教程(布局篇 3.1)相关推荐

  1. Android实战开发-Kotlin教程(入门篇-RecyclerView数据列表的实现)

    在移动应用开发中,很多时候我们需要去展示数据记录,如电商应用中的商品列表.订单列表等等一系列的数据记录的展示时,我们需要用到Android的列表组件展示这些数据,列表组件应该是我们遇到到比较常见也是必 ...

  2. Android实战开发-Kotlin教程(语法篇 1.2)

    上一篇我们介绍了Kotlin语法的一些基础用法,本章我们来学习一下Kotin的语法知识 if表达式 if表达式在开发过程中最常见的判断表达式 if后面的括号代表判断的条件表达式,如条件表达式的结果为t ...

  3. Android实战开发-Kotlin教程(组件篇 2.3)

    上一篇我们对TextView的使用以及相关属性有了一定的了解,本篇我们开始了解Button和EditText.ImageView的使用 Button Button是UI中的一个小部件,主要用于交互中用 ...

  4. Android实战开发——引导页面(ViewPager)篇

    Android实战开发之引导页面 文章目录 Android实战开发之引导页面 前言 一.概述 二.操作步骤 1.操作准备 2.初始化 3.适配器设置 3.圆点的滑动事件 三.总结 前言 本篇文章主要介 ...

  5. 傻瓜式Android APP开发入门教程

    这篇文章主要介绍了Android APP开发入门教程,从SDK下载.开发环境搭建.代码编写.APP打包等步骤一一讲解,非常简明的一个Android APP开发入门教程,android各种机子和rom的 ...

  6. Android camera(4)---Android Camera开发之基础知识篇

    Android Camera开发之基础知识篇 转自:https://blog.csdn.net/feiduclear_up/article/details/51968975#jump5 概述 Andr ...

  7. Android UI开发第二十五篇——分享一篇自定义的 Action Bar

    Action Bar是android3.0以后才引入的,主要是替代3.0以前的menu和tittle bar.在3.0之前是不能使用Action Bar功能的.这里引入了自定义的Action Bar, ...

  8. 微信公众号开发入门教程第一篇

    微信公众号开发入门教程第一篇 关键字:微信公众平台开发 作者:方倍工作室 在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯.及HTTP/XML/CSS/ ...

  9. 【2023】Kotlin教程 第二篇 面向对象与函数式编程 第15章 数据容器——数组和集合 15.2 集合概述

    [2023]Kotlin教程 文章目录 [2023]Kotlin教程 第二篇 面向对象与函数式编程 第15章 数据容器--数组和集合 15.2 集合概述 第二篇 面向对象与函数式编程 第15章 数据容 ...

最新文章

  1. 【Python培训基础】一篇文件教你py文件打包成exe
  2. linux svn安装
  3. 一键部署区块链环境 阿里云发布企业级BaaS服务
  4. 来和小伙伴一起学习响应式网页设计吧
  5. 【渝粤题库】陕西师范大学200471 英汉翻译
  6. mysql zrm_mysql数据库备份—ZRM
  7. fastify 后台_如何使用Fastify启动和运行
  8. Ubuntu14.04 indigo ROS的一些使用指令
  9. 设计模式-创建型模式-模板方法
  10. java 解析二进制_Java二进制指令代码解析
  11. C++11与最小垃圾回收
  12. 前端js获取文件名、后缀,截取文件名后缀
  13. STM32F103_study50_The punctual atoms(STM32 General timer basic principle )
  14. android超频使用方法,SetCPU高级设置
  15. 被“自由行动祝福”环绕的战士 —— 微软实习之魔兽攻略版
  16. 巴比特 | 元宇宙每日必读:工业元宇宙究竟是什么,为何它值得被追捧?
  17. vim的安装以及基础使用方法;
  18. windows下使用nvcc和nvprof
  19. 经营者思维—赢在战略人力资源管理
  20. 在线圆型针织内衣机织物CAD系统设计

热门文章

  1. python可迭代_python中可迭代对象有哪些
  2. 数学建模专栏 | 第十篇:MATLAB CUMCM真题求解实例一:数据型
  3. [反汇编练习]160个CrackMe之001
  4. 高质量实时渲染课程笔记(三)— 实时阴影渲染1(Shadow Mapping、PCF、PCSS)
  5. vb.net 教程 3-10 窗体编程 datagridview控件 3 禁止追加行 与 禁止删除行
  6. Processon一款免费好用的画图工具
  7. matlab下的logistic回归分析
  8. 综合中央计算机系统简称,广州地铁TVM本地数据与SC报表数据不一致故障分析研究...
  9. 【设计模式】模板方法模式(C#)
  10. HTML作业-我的大学生活