介绍
网格布局管理器是在 Android 4.0 版本中提出的,使用 GridLayout 表示。在网格布局管理器中,屏幕被虚拟的细线划分成行、列和单元格,每个单元格放置一个组件,并且这个组件也可以跨行或跨列摆放,如图 3.24 所示。(网格布局管理器与表格布局有些类似,都可以以行、列的形式管理放入其中的组件,但是它们之间最大的不同就是网格布局管理器可以跨行显示组件,而表格布局管理器则不能)
基本的语法格式如下:
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
属性列表
>
</GridLayout >
XML属性
GridLayout 支持
XML属性 | 描述 |
android:columnCount | 用于指定网格的最大列数 |
android:rowCount | 用于指定网格的最大行数 |
android:orientation | 用于当没有为放入其中的组件分配行和列时,指定其排列方式。其属性值为horizontal 表示水平排列;属性值为 vertical 表示垂直排列 |
android:useDefaultMargins | 用于指定是否使用默认的边距,其属性值设置为 true 时,表示使用;属性值为false 时,表示不使用 |
android:alignmentMode | 用于指定该布局管理器采用的对齐模式,其属性值为 alignBounds 时,表示对齐边界;值为 alignMargins 时,表示对齐边距,默认值为 alignMargins |
android:rowOrderPreserved | 用于设置行边界显示的顺序和行索引的顺序是否相同,其属性值为 true,表示相同,属性值为 false,表示不相同 |
android:columnOrderPreserved | 用于设置列边界显示的顺序和列索引的顺序是否相同,其属性值为 true,表示相同, 属性值为 false,表示不相同 |
GridLayout 子组件支持
为了控制网格布局管理器中各子组件的布局分布,网格布局管理器提供了GridLayout.LayoutParams内部类,在该类中提供了如表
在网格布局管理器中,如果想让某个组件跨行或跨列,那么需要先通过android:layout_columnSpan或者android:layout_rowSpan设置跨越的行或列数,然后再设置其layout_gravity属性为fill,表示该组件填满跨越的行或者列
XML属性 | 描述 |
android:layout_column | 用于指定该子组件位于网格的第几列 |
android:layout_columnSpan | 用于指定该子组件横向跨几列(索引从 0 开始) |
android:layout_columnWeight | 用于指定该子组件在水平方向上的权重,即该组件分配水平剩余空间的比例 |
android:layout_gravity | 用于指定该子组件采用什么方式占据该网格的空间,其可选值有 top(放置在顶部)、bottom(放置在底部)、left(放置在左侧)、right(放置在右侧)、 center_vertical(垂直居中)、fill_vertical(垂直填满)、center_horizontal(水平居中)、fill_horizontal(水平填满)、center(放置在中间)、fill(填满)、clip_vertical(垂直剪切)、clip_horizontal(水平剪切)、start(放置在开始位置)、end(放置在结束位置) |
android:layout_row | 用于指定该子组件位于网格的第几行(索引从 0 开始) |
android:layout_rowSpan | 用于指定该子组件纵向跨几行 |
android:layout_rowWeight | 用于指定该子组件在垂直方向上的权重,即该组件分配垂直剩余空间的比例 |