Android学习笔记六:六大布局

摘要:
六大界面布局方式包括:线性布局、帧布局、表格布局、相对布局、绝对布局和网格布局。LinearLayout子元素支持的常用XML属性及方法XML属性说明android:layout_gravity指定该子元素在LinearLayout中的对齐方式android:layout_weight指定子元素在LinearLayout中所占的权重2.TableLayout表格布局TableLayout继承自Linearout,本质上仍然是线性布局管理器。

六大界面布局方式包括:线性布局(LinearLayout)、帧布局(FrameLayout)、表格布局(TableLayout)、相对布局(RelativeLayout)、绝对布局(AbsoluteLayout)和网格布局(GridLayout)。

1. LinearLayout线性布局

LinearLayout容器中的组件一个挨一个排列,通过控制android:orientation属性,可控制各组件是横向排列还是纵向排列。

LinearLayout的常用XML属性及相关方法

XML属性相关方法说明
android:gravitysetGravity(int)设置布局管理器内组件的对齐方式
android:orientationsetOrientation(int)设置布局管理器内组件的排列方式,可以设置为horizontal、vertical两个值之一

其中,gravity属性支持top, left, right, center_vertical, fill_vertical, center_horizontal, fill_horizontal, center, fill, clip_vertical, clip_horizontal。也可以同时指定多种对齐方式的组合。

LinearLayout子元素支持的常用XML属性及方法

XML属性说明
android:layout_gravity指定该子元素在LinearLayout中的对齐方式
android:layout_weight指定子元素在LinearLayout中所占的权重

2. TableLayout表格布局

TableLayout继承自Linearout,本质上仍然是线性布局管理器。表格布局采用行、列的形式来管理UI组件,并不需要明确地声明包含多少行、多少列,而是通过添加TableRow、其他组件来控制表格的行数和列数。

每向TableLayout中添加一个TableRow就代表一行;

每向TableRow中添加一个一个子组件就表示一列,可以通过android:layout_span="n"设置子组件占据n列;

如果直接向TableLayout添加组件,那么该组件将直接占用一行;

3. FrameLayout帧布局

FrameLayout直接继承自ViewGroup组件。帧布局为每个加入其中的组件创建一个空白的区域(称为一帧),每个子组件占据一帧,这些帧会根据gravity属性执行自动对齐。

如果在同一个地方定义了多个控件,则后面的控件覆盖前面的空间。

4. RelativeLayout相对布局

RelativeLayout.LayoutParams里只能设为boolean的XML属性

XML属性说明
android:layout_centerHorizontal设置该子组件是否位于布局容器的水平居中
android:layout_centerVertical
android:layout_centerParent
android:layout_alignParentBottom
android:layout_alignParentLeft
android:layout_alignParentRight
android:layout_alignParentTop

RelativeLayout.LayoutParams里属性值为其他UI组件ID的XML属性

XML属性说明
android:layout_toRightOf控制该子组件位于给出ID组件的右侧
android:layout_toLeftOf
android:layout_above
android:layout_below
android:layout_alignTop
android:layout_alignBottom
android:layout_alignRight
android:layout_alignLeft

5. GridLayout网格布局

GridLayout是Android4.0增加的网格布局控件,与之前的TableLayout有些相似,它把整个容器划分为rows × columns个网格,每个网格可以放置一个组件。性能及功能都要比tablelayout好,比如GridLayout布局中的单元格可以跨越多行,而tablelayout则不行,此外,其渲染速度也比tablelayout要快。

GridLayout提供了setRowCount(int)和setColumnCount(int)方法来控制该网格的行和列的数量

GridLayout常用的XML属性和方法说明

XML属性相关方法说明
android:alignmentModesetAlignmentMode(int)设置该布局管理器采用的对齐模式
android:columnCountsetColumnCount(int)设置该网格的列数量
android:columnOrderPreservedsetColumnOrderPreserved(boolean)设置该网格容器是否保留序列号
android:roeCountsetRowCount(int)设置该网格的行数量
android:rowOrderPreservedsetRowOrderPreserved(boolean)设置该网格容器是否保留行序号
android:useDefaultMarginssetUseDefaultMargins(boolean)设置该布局管理器是否使用默认的页边距

在其中的组件常用的XML属性和方法说明

XML属性说明
android:layout_column设置该组件在GridLayout的第几列
android:layout_columnSpan设置该子组件在GridLayout横向上跨几列
android:layout_gravity设置该子组件采用何种方式占据该网格的空间
android:layout_row设置该子组件在GridLayout的第几行
android:layout_rowSpan设置该子组件在GridLayout纵向上跨几行

6. AbsoluteLayout绝对布局(不推荐)

即Android不提供任何布局控制,而是由开发人员自己通过X坐标、Y坐标来控制组件的位置。每个组件都可指定如下两个XML属性:

  • layour_x;
  • layout_y;

免责声明:文章转载自《Android学习笔记六:六大布局》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Mybatis框架的输出映射类型httprunner3.x 测试用例teststeps-RunRequest下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

webapi的返回类型,webapi返回图片

1.0 首先是返回常用的系统类型,当然这些返回方式不常用到。如:int,string,list,array等。这些类型直接返回即可。 1 public List<string> Get() 2 { 3 List<string> list = new List<string>() {...

二维码扫描开源库ZXing定制化【转】

转自:http://www.cnblogs.com/sickworm/p/4562081.html 最近在用ZXing这个开源库做二维码的扫描模块,开发过程的一些代码修改和裁剪的经验和大家分享一下。 建议: 如果需要集成到自己的app上,而不是做一个demo,不推荐用ZXing的Android外围开发模块,只用核心的core目录的代码就好了。androi...

Tomcat的配置文件详解

前提, Tomcat *的下载(绿色版和安装版都适用)Tomcat *的安装和运行(绿色版和安装版都适用)  Tomcat的配置文件,在$TOMCAT_HOME下的conf,我这里是, 1、打开server.xml   我们可以在server.xml文件中修改端口号,找到conf文件夹,打开其中的server.xml, 目前设置的端口号是8080:...

C#编程中关于数据缓存的经验总结

C#编程中关于数据缓存的经验总结一直以来,我都发现程序的运行速度不够理想。通过查代码,发现程序对数据库的访问非常频繁,而且检索出来的数据量比较大。为了让程序运行快起来,我想对程序采用适当的缓存方法。我在C#尝试了5种方法进行数据缓存,具体如下:(如有遗漏,错误欢迎大家指正,欢迎提建议。)1:Session方法:此方法是针对于每个用户来的,如果用户量比较大,...

关于Spring IOC (DI-依赖注入)需要知道的一切

关联文章: 关于Spring IOC (DI-依赖注入)你需要知道的一切 关于 Spring AOP (AspectJ) 你该知晓的一切 《Spring入门经典》这本书无论对于初学者或者有经验的工程师还是很值一看的,最近花了点时间回顾了Spring的内容,在此顺带记录一下,本篇主要与spring IOC相关 ,这篇博文适合初学者也适合spring有过开发经...

Nginx 笔记与总结(13)Nginx 的 gzip 压缩

使用 FireFox(40.0)访问博客园(http://www.cnblogs.com/),观察 http 头信息 请求头信息: Accept-Encoding gzip, deflate 表示浏览器接受的压缩方式有 gzip 和 deflate 响应头信息: Content-Encoding gzip 表示服务器返回内容的压缩方式是 gzip 注意...