<该文章参考各大博客以及书籍总结而来,如有问题欢迎指出^ ^>

一、五大传统布局+新布局

  • 线性布局——LinearLayout
  • 相对布局——RelativeLayout
  • 帧布局——FrameLayout
  • 绝对布局——AbsoluteLayout
  • 表格布局——TableLayout
  • 约束布局——ConstraintLayout

二、介绍

(一)LinearLayout

1.简介

线性布局,是最常用的布局之一,这个布局会将它所包含的控件在线性方向上依次排列,排列方向可以设定为水平方向或垂直方向。

2.属性

排列方向:

 android:orientation="horizontal" //水平
android:orientation="vertival" //垂直

对齐方式:

 android:gravity="centestar|end|top|left|right|center_vertical|center_horizontal"
android:layout_gravity

注意:android:gravity 指本元素的子元素相对它的对齐方式

android:layout_gravity指本元素相对它的父元素的对齐方式

但凡加上'layout_'前缀的属性,则意味着是本元素相对其父元素的属性

center :居中显示,但并不表示显示在LinearLayout的中心,当LinearLyout线性方向为垂直方向时,等同于center_horizental;水平方向时,等同于cental_vertical

start和left end和right :这里对于中国的情况,两者的效果是相同的。left是绝对的左边,right是绝对的右边,而start会根据不同的国家改变习惯。

子控件的大小:

 android:layout_weight ="1"  //权重
android:layout_width="match_parent|wrap_content|xdp"
android:layout_height="match_parent|wrap_content|xdp"

注意:layout_weight :用来分配当前控件在剩余空间的大小

当我们是使用layout_weight时,此时控件的宽度不应该再用layout_width来决定,这里指定0dp是一种比较贵规范的写法。(dp是Android中用于指定控件大小、间距等属性的单位)

(二)RelativeLayout

1.简介

相对布局相对于线性布局更为随意,它可以通过相对定位的方式让空间出现在布局的任何位置。相对布局可以让子控件相对于兄弟控件或父控件进行布局。

2.属性

子控件常用布局:

 //相对于父控件
android:layout_alignParentTop //空间的顶部与父控件的顶部对齐
androif:layout_alignParentBottom //控件的底部与父控件的底部对齐
android:layout_alignParentLeft //控件的左部与父控件左部对齐
android:layout_alignParentRight //控件的右部与父控件的右部对齐 //相对给定id控件
android:layout_above //控件的底部置于给定控件之上 9 android:layout_below //控件的底部置于给定控件之下
android:layout_toLeftOf //控件的右边缘于给定控件左边缘对齐
android:layout_toRightOf //控件的左边缘于给定控件右边缘对齐 android:layout_alighBaseline //控件的baseline与给定控件的baseline对齐
android:layout_alignTop //控件的顶部边缘与给定控件的顶部边缘对齐
android:layout_alignBottom //控件的底部边缘与给定控件的底部边缘对其
android:layout_alignLeft //控件的左边缘与给定控件的左边缘对齐
android:layout_alignRight //控件的右边缘与给定控件的右边缘对齐 //居中
android:layout_centerHorizontal //水平居中
android:layout_centerVertical //垂直居中
android:layout_centerparent //父控件中央 //属性值为具体像素值:dp、px
android:layout_marginBottom //离某元素底边缘的距离
android:layout_marginLeft //离某元素做边缘的距离
android:layout_marginRight //离某元素右边缘的距离
android:layout_marginTop //李某元素上边缘的距离
android:padding
android:paddingTop
android:paddingLeft
android:paddingRight

注意:当一个控件去引用另外一个控件的id时,该控件一定要定义在引用控件的后面,不然会出现找不到id的情况

'align' 排列;‘alignParent’排列在父容器的某个位置

在最新版本的Android中,单独使用包含Start或者End属性的话,会报错,提示需要再加入Left和Right属性;而单独使用Left和Right属性,会提示一个warning,提示推荐加入Star或者End属性

margin 边缘(外边距);padding 衬垫,填充(内边距)

(三)FrameLayout

1.简介

最简单的一种布局,所有的控件都会默认摆放在布局的左上角。后续添加的控件会覆盖前一个。帧布局的应用场景并不是很多,不过经常配合Fragment使用/

2.属性

 android:foreground   //设置改帧布局的前景图像
android:foregroundGravity //设置前景图像显示的位置

(四)AbsoluteLayout

1.简介

绝对布局中将所有的子元素通过android:layout_x和android:layout_y属性,将子元素的坐标位置固定下来。屏幕左上角为坐标(0,0),横向往右为正方,纵向往下为正方。

(五)TableLayout

1.简介。

表格布局,适用于多行多列的布局格式,每个TableLayout是由多个TableRow组成,一个TableRow就表示TableLayout中的每一行,这一行可以由多个子元素组成。实际上TableLayout和TableRow都是LineLayout线性布局的子类。但是TableRow的参数android:orientation属性值固定为horizontal,且android:layout_width=MATCH_PARENT,android:layout_height=WRAP_CONTENT。所以TableRow实际是一个横向的线性布局,且所以子元素宽度和高度一致。

2.属性

 android:shrinkColumns:  //设置可收缩的列,内容过多就收缩显示到第二行
android:stretchColumns: //设置可伸展的列,将空白区域填充满整个列
android:collapseColumns: //设置要隐藏的列 //子控件常用属性:
android:layout_column://第几列
android:layout_span://占据列数
注意:在TableLayout中,单元格可以为空,但是不能跨列,意思是只能不能有相邻的单元格为空
     列的索引从0开始,shrinkColumns和stretchColumns可以同时设置。

  

 

最新文章

  1. Bootstrap弹出框(modal)垂直居中
  2. Win7下用IIS发布网站
  3. Java学习笔记(七)&mdash;&mdash;对象
  4. 上传文件大于 2G以上
  5. Html - 图片
  6. The Socket API, Part 4: Datagrams
  7. MVC3、如何应用EntityFramework 连接MySql 数据库
  8. 工厂模式Assembly.Load(path).CreateInstance 反射出错解决办法
  9. Orange Greenworks
  10. POJ-1679 The Unique MST (判断最小生成树的唯一性)
  11. 斜率DP个人理解
  12. Dedecmsv5.7整合ueditor 图片上传添加水印
  13. TL Cop
  14. Microsoft DirectX SDK 2010 版本下载
  15. ubuntu 14.04查看java的安装路径
  16. c# Windows Service 桌面上显示UI
  17. Python将科学计数法数值转换为指定精度浮点数
  18. springboot利用MockMvc测试controller控制器
  19. xmlns:app
  20. JavaScript DOM编程艺术 笔记(四)

热门文章

  1. 牛客练习赛17 B-好位置
  2. 基于LinkedhashMap实现的LRU算法
  3. 几个Python爬虫工具介绍
  4. MySQL性能调优与架构设计(简朝阳)
  5. asp.net core 使用 NLog日志
  6. jinfo Java配置信息工具
  7. Android Q 正式命名为 Android 10
  8. C++输入输出常用格式(cin,cout,stringstream)
  9. Knative 实战:三步走!基于 Knative Serverless 技术实现一个短网址服务
  10. DirectX12 3D 游戏开发与实战第二章内容