第1组UI组件:布局管理器
1 布局管理的来源
为了让UI在不同的手机屏幕上都能运行良好----不同手机屏幕的分辨率/尺寸并不完全相同,如果让程序手动控制每个组件的大小、位置,会给编程带来巨大的麻烦。为了解决这个问题。android提供了布局管理器。布局管理器可以根据运行平台来调整组件大小,程序员要做的只是为容器选择合适的布局管理器。
2 布局管理类关系视图
布局管理器与java的swing编程不同,布局管理器本身就是一个UI组件,所有的布局管理器都ViewGroup的子类,其关系如下图。所有的布局管理器都可以作为容器类使用,通过addView添加组件,另外布局管理器本身也可以作为View组件添加到布局管理器中。

3 线性布局管理器LinearLayout
线性布局由LinearLayout类代表,将容器里的组件一个挨一个地排列起来,LinearLayout不会自动换行,到末尾后剩余的组件将不会被显示出来。LinearLayout支持的常用xml属性及其说明。
| xml属性 | 说明 |
| android:baselineAligned | 该属性为false,将会阻止布局管理器与它的子元素基线对其 |
| android:divider | 设置垂直布局时,两个按钮之间的分隔条 |
| android:gravity | 设置布局管理器内组件的对齐方式。该属性支持top/button/left/right/center_vertical/fill_vertical... |
| android:measureWithLargestChild | 当属性设置为true时,所有带权重的子元素都会具有最大元素的最小尺寸 |
| android:orientation | 设置布局管理器内组件的排列方式vertical/horizontal默认值 |
3.1FrameLayout也有LayoutParams,MarginLayoutParams内部类控制参数;如下为LinearLayout.LayoutParams控制属性
| xml属性 | 说明 |
| android:layout_gravity | 指定该布局管理器内子组件布局方式 |
| android:layout_weight | 指定该子元素在linearLayout中所占的权重 |
4 表格布局
- 表格布局由TableLayout所代表,继承自LinearLayout,因此其本质仍然是线性管理器
- 表格借助TableRow来控制其他组件的行数与列数,如果某组件独占一行则可省去TableRow直接添加该组件
- 在表格布局中,列的宽度由该列中最宽的那个单元格所决定;整个表格布局的宽度,则取决于父容器的宽度
- TableLayout的常用xml属性及其说明
| xml属性 | 说明 |
| android:collapseColumns | 设置需要被隐藏的列序号,并用逗号隔开 |
| android:shrinkColumns | 设置需要被压缩的列序号,并用逗号隔开 |
| andriod:stretchColumns | 设置需要被拉伸的列序号,并用逗号隔开 |
5 帧布局
- 帧布局由FrameLayout所代表,继承自VIewGroup组件
- 帧布局为每个加入其中的组件创建一个空白区域(称为一帧)
- 每个子组件占据一帧,这些帧会根据gravity属性值自动对齐
- FrameLayout也有LayoutParams,MarginLayoutParams内部类控制参数
- FrameLayout常用的xml属性及其说明
| xml属性 | 说明 |
| android:foreground | 设置该帧布局的前景图像 |
| android:foregroundGravity | 定义绘制前景图像的gravity属性 |
6 相对布局
- 相对布局由RelativeLayout代表,相对布局容器内子组件的位置总是相对兄弟组件、父容器来决定的,因此这种相对布局方式被称为相对布局
- 如果A的位置由B组件位置决定,android要求先定义B组件,再定义A组件
- LayoutParams还继承了MarginLayoutParams,故Relative布局容器也可以指定MarginLayoutParams所支持的属性
- RelativeLayout可支持两个xml属性
| xml属性 | 说明 |
| android:gravity | 设置布局容器内各子组件的对齐方式 |
| android:ignoreGravity | 设置哪个组件不受gravity属性的影响 |
- RelativeLayout.LayoutParams可支持的xml属性及其说明
| android:layout_centerHorizontal | 控制该子组件是否位于布局容器的水平居中 | |
|
控制该子组件是否位于布局容器的垂直居中 | |
| android:layout_centerInParent | 控制该子组件是否位于布局容器的中央位置 | |
| android:layout_alignParentButtom | 控制该子组件是否位于布局容器的底端对齐 | |
| android:layout_alignParentLeft | 控制该子组件是否位于布局容器的左端对齐 | |
| android:layout_alignParentRight | 控制该子组件是否位于布局容器的右端对齐 | |
| android:layout_alignParentTop | 控制该子组件是否位于布局容器的顶端对齐 | |
| android:layout_toRightOf | 控制该子组件位于给出ID组件的右侧 | |
| android:layout_toLeftOf | 控制该子组件位于给出ID组件的左侧 | |
| android:layout_above | 控制该子组件位于给出ID组件的上方 | |
| android:layout_below | 控制该子组件位于给出ID组件的下方 | |
| android:layout_alignTop | 控制该子组件位于给出ID组件的上边界对齐 | |
| android:layout_alignBottom | 控制该子组件位于给出ID组件的下边界对齐 | |
| android:layout_alignLeft | 控制该子组件位于给出ID组件的左边界对齐 | |
| android:layout_alignRight | 控制该子组件位于给出ID组件的右边界对齐 |
7 网格布局
- 网格布局由GridLayout代表,是android4.0新增的布局管理器,如需在早期版本中使用,则需要导入相应的支撑库
- GridLayout的xml属性及其相关方法
| xml属性 | 说明 |
| android:alignmentMode | 该布局管理器采用的对齐模式 |
| android:columnCount | 该网格的列数量 |
| android:columnOrderPreserved | 该网格容器是否保留列序号 |
| android:rowCount | 该网格的行数量 |
| android:rowOrderPreserved | 该网格容器是否保留行序号 |
| android:useDefaultMargins | 该布局管理是否使用默认的页边距 |
- LayoutParams的xml属性及其相关方法
| xml属性 | 说明 |
| android:layout_column | 设置该子组件在GridLayout的第几列 |
| android:columnSpan | 设置该子组件在GridLayout的横向跨几列 |
| android:layout_gravity | 该子组件采用何种方式占据网格空间 |
| android:layout_row | 设置该子组件在GridLayout的第几行 |
| android:layout_rowSpan | 设置该子组件在GridLayout的横向跨几行 |
8 绝对布局(AbsoluteLayout)
已过时,很少用,这里不深究
第1组UI组件:布局管理器的更多相关文章
- 安卓开发:UI组件-布局管理器和文本显示
接下来的随笔,记录了在学习b站up主:天哥在奔跑,录制的教学视频的同时,进行一个app开发. up主:天哥在奔跑 视频地址:https://www.bilibili.com/video/av38409 ...
- 【详细】Android入门到放弃篇-YES OR NO-》各种UI组件,布局管理器,单元Activity
问:达叔,你放弃了吗? 答:不,放弃是不可能的,丢了Android,你会心疼吗?如果别人把你丢掉,你是痛苦呢?还是痛苦呢?~ 引导语 有人说,爱上一个人是痛苦的,有人说,喜欢一个人是幸福的. 人与人之 ...
- Android UI组件:布局管理器
为了更好的管理Android应用的用户界面中的组件,Android提供了布局管理器.通过使用布局管理器,Android应用的图形用户界面具有良好的平台无关性.通常,推荐使用布局管理器来管理组件的分布. ...
- Java可视化编程,基于布局管理器的UI设计
在<事件驱动模型>讲述了如何将用户与功能实现代码联系到一起.怎么样便于用户理解和符合用户的使用习惯? 本篇还是就此问题作分析,站在用户角度上分析UI各组件倒底该如何设计呈现. 优秀的UI会 ...
- 第13章 Swing程序组件----常用布局管理器
在Swing中,每个组件在容器中都有一个具体的位置和大小,而在容器中摆放各种组件时很难判断其具体位置和大小.布局管理器提供了Swing组件安排.展示在容器中的方法及基本的布局功能. Swing提供的常 ...
- 【java】浅析java组件中的布局管理器
这篇博文笔者介绍一下java组件中,常用的布局管理器.java组件中的布局方式有好几十种,所有的这些布局管理器都实现了java.awt.LayoutManager接口.接下来笔者介绍一下常用的5种布局 ...
- Swing布局管理器介绍
创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://zhangjunhd.blog.51cto.com/113473/128174 当选 ...
- (转)Java 的swing.GroupLayout布局管理器的使用方法和实例
摘自http://www.cnblogs.com/lionden/archive/2012/12/11/grouplayout.html (转)Java 的swing.GroupLayout布局管理器 ...
- Android开发5:布局管理器2(表格布局TableLayout)
版本:Android4.3 API18 学习整理:liuxinming 概念 TableLayout继承了LinearLayout,因此它的本质依然是线性布局管理器. 表格布局采 ...
随机推荐
- photoshop:模仿-广告放射背景
模仿对象:图片大小960*400 过程: 1.新建文档,大小为:960*800 2.选择渐变工具,黑白从上往下渐变 3.滤镜->扭曲->波浪,参考设置 4.滤镜->扭曲->极坐 ...
- CentOS系统内核升级
yum -y update 升级所有包,改变软件设置和系统设置,系统版本内核都升级 yum -y upgrade 升级所有包,不改变软件设置和系统设置,系统版本升级,内核不改变
- C# 框架是什么?MVC是什么 ?工厂模式是什么?设计模式是什么?三层架构是什
C# 框架是什么?MVC是什么 ?工厂模式是什么?设计模式是什么?三层架构是什么?如果要学我该从何学起??? C# 框架看这里http://download.csdn.net/source/25784 ...
- Android开发UI之给ImageView添加蒙版
ImageView控件添加蒙版, 通过属性:android:tint="" 比如 android:tint="#44ff0000"
- js正则表达式中的特殊字符
正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个 ...
- poj 1328 Radar Installation(贪心)
题目:http://poj.org/problem?id=1328 题意:建立一个平面坐标,x轴上方是海洋,x轴下方是陆地.在海上有n个小岛,每个小岛看做一个点.然后在x轴上有雷达,雷达能覆盖的范 ...
- 手机3D游戏开发:自定义Joystick的相关设置和脚本源码
Joystick在手游开发中非常常见,也就是在手机屏幕上的虚拟操纵杆,但是Unity3D自带的Joystick贴图比较原始,所以经常有使用自定义贴图的需求. 下面就来演示一下如何实现自定义JoySti ...
- I.MX6 build.prop
/************************************************************************ * I.MX6 build.prop * 说明: * ...
- linq里面似in的查询
1.linq里面似in的查询 List<string> source = new List<string>{ "aaa", "bbb" ...
- MessagePack介绍
在项目中,服务端的人需要我研究messagepcak 进行数据的传输,对messagePack的了解就是传输的数据格式都是二进制,可以节省用户的流量,就因为这点 数据格式小,服务端决定采用msgpac ...