转载自http://www.cnblogs.com/over140/archive/2011/12/08/2280224.html

欢迎大家转载

前言

  本章内容android.widget.GridLayout章节,版本为Android 4.0 r1(新增),翻译来自:"獨鍆躌踄",欢迎访问他的博客:"http://www.cnblogs.com/mxgsa/",再次感谢"獨鍆躌踄" !期待你一起参与翻译Android的相关资料

声明

  欢迎转载,但请保留文章原始出处:)

    博客园:http://www.cnblogs.com/

    Android中文翻译组:http://androidbox.sinaapp.com/

GridLayout

译者署名:獨鍆躌踄

译者链接:http://www.cnblogs.com/mxgsa/

版本:Android 4.0 r1

结构

继承关系

public class GridLayout extends ViewGroup

java.lang.Object

android.view.View

android.view.ViewGroup

android.widget.GridLayout

类概述

(转自文章精选1)

该布局把子视图存放在一个矩形网格中。

网格是由被无数虚细线分割成多个单元格的可视区域组成。贯穿整个API的网格线通过网格索引数来指定。一个N列的网格在运行中包含0到N的 N+1个索引,不管怎么配置GridLayout 网格索引0是固定网格容器的前边距,索引N是固定容器的后边距(考虑后填充)。

 

行和列的规格

在rowSpec和columnSpec布局参数的定义后,子视图占用一个或者多个连续单元格,每个规范是定义被占用的行或列的设置和子视图在单元格是如何对齐。尽管各个单元格在一个GridLayout中不重叠,GridLayout并没有阻止子视图被定义为占据相同的单元格或者单元格组。然而在这种情况下,也不能保证子视图在布局操作完成后自己不会重叠。

默认单元格分配

如果一个子视图没有指定占据的行和列索引,GridLayout会自动指定单元格位置,包括:方向,行数和列数的属性。

 

空间(Place)

子视图之间的空间可能会通过使用专用的空间视图的实例,或通过设置leftMargin,topMargin,rightMargin和bottomMargin布局参数后指定。当设置为useDefaultMargins属性,根据当前平台的用户界面风格,子视图周围的默认边距将自动分配。每个被定义的边距可通过分配到相应的布局参数来独立覆盖。默认值通常在不同组成部分会产生一个合理的间距,但在不同平台版本之间可能会改变。

多余的空间分布

GridLayout的多余的空间分布是基于优先级,而不是根据比例。

一个子视图的的伸展程度通过其行和列的组的对其属性推算(这是典型的设置子视图的布局参数gravity属性)。如果对齐是沿着给定的轴定义,那么该组件在这个方向具有灵活性。如果没有对齐,相反组件会缺乏灵活性。

多个组件在同一行或列组被认为平行的。如果组中所有在内的组件是灵活的,那么这个小组是灵活的。位置在一个共同的边界两侧的行和列组,反而认为采取同一系列。如果复合组的一个元素是灵活的,则这个复合组是灵活的。

为了使一列伸展,确保所有的组件,它里面定义一个的gravity属性。为了防止从列伸展,确保列中的组成部分之一没有定义的gravity属性。

灵活性的原则并不能完全的消除歧义,推荐GridLayout中的算法更接近其右侧和底边的行和列。

局限性

GridLayout的不提供支持空间(weight)分配的原则,空间分配界定。在一般情况下,可以配置一个GridLayout多余的空间分布在多个行或列之间的不相同的比例。

一些常见的适用情况,如下:将等量的周围空间中的一个组成部分单元格组;使用居中对齐(或gravity属性)。对于完全控制对或列中多余的空间分布;使用的LinearLayout子视图约束相关的单元格组的组成部分。当使用这些技术,记住,单元格组可能定义重叠。

XML属性

属性名称

描述

android:alignmentMode

当设置alignMargins,使视图的外边界之间进行校准,定义其边距,当设置alignBounds,使视图的边界之间进行校准,默认设置alignMargins。

常量

备注

alignBounds

0

对齐子视图边界。

alignMargins

1

对齐子视图边距。

android:columnCount

自动定位子视图时创建的最大列数

android:columnOrderPreserved

当设置为true,使列边界显示的顺序和列索引的顺序相同。默认是true。

android:orientation

Orientation属性在布局时候不被使用,它仅当子视图布局参数没有指定的时候分配行和列,GridLayout在这种情况下和LinearLayout使用方法一样,根据标志的值将所有组件放在单个行或者放在当个列中。在水平情况下,当一行的所有列都填充满时,columnCount属性额外提供创建新行。同样在垂直情况下,rowCount属性有相同的作用,默认是水平的。

常量

备注

horizontal

0

定义水平部件。

vertical

1

定义垂直部件。

android:rowCount

自动定位子视图时创建的最大行数

android:rowOrderPreserved

当设置为true,使行边界显示的顺序和行索引的顺序相同。默认是true。

android:useDefaultMargins

当设置ture,当没有指定视图的布局参数时,告诉GridLayout使用默认的边距。默认值是false。

为GridLayout的使用布局参数的完整描述GridLayout.LayoutParams。

常量

类型

属性名称

描述

int

ALIGN_BOUNDS

这是alignmentMode的常量,当alignmentMode设置成ALIGN_BOUNDS,每个组件之间的原始视图边界边距对齐:即组件的区域通过下面分隔:顶部,左侧,底部和右侧的属性。默认值:0

int

ALIGN_MARGINS

这是alignmentMode的常量。当alignmentMode设置ALIGN_MARGINS,每个视图的边界向外延伸,根据他们的边距,产生的矩形边距对齐。默认值:1

int

HORIZONTAL

水平方向。默认值:0

int

UNDEFINED

常数用于表示一个不确定的值。该字段可以使用这个值来表示他们的值观尚未确定。同样的方法可以返回这个值,表明没有能实现返回的合适值,该常数的值(目前MIN_VALUE)是为了避免可能不知道其标志的有效值之间的混淆。

int

VERTICAL

垂直方向。默认值:1

 

字段

public static final GridLayout.Alignment

属性名称

描述

BASELINE

表示一个视图应该和在同一单元格组的其他视图基线对齐,这个常量仅用做rowSpecs对齐

BOTTOM

表示一个视图应该和在同一单元格组的其他视图底部边距对齐。

CENTER

表示一个视图应该和在同一单元格组的其他视图居中对齐,此常数可用于rowSpecs和columnSpecs。

FILL

表示视图应该扩大以填充其单元格组。此常数可用于rowSpecs和columnSpecs。

LEFT

表示一个视图应该和在同一单元格组的其他视图左边距对齐。

RIGHTT

表示一个视图应该和在同一单元格组的其他视图右边距对齐。

TOP

表示一个视图应该和在同一单元格组的其他视图上边距对齐。

 

公共方法

public GridLayout.LayoutParams generateLayoutParams (AttributeSet attrs)

在提供的属性集基础上返回一个新的布局参数设置。

参数

attrs                   创建布局参数的属性

返回值

ViewGroup.LayoutParams实例或者他的派生实例

public int getAlignmentMode ()

返回对齐方式.

相关XML属性

android:alignmentMode

返回值

对齐方式;  ALIGN_BOUNDS 或者 ALIGN_MARGINS

参见

ALIGN_BOUNDS

ALIGN_MARGINS

setAlignmentMode(int)

public int getColumnCount ()

返回当前的列数。通过 setColumnCount(int)方法最后一次设置的值,如果没有这样的值被设置,返回在columnSpec定义中的每一个上限的最大值。

相关XML属性

android:columnCount

返回值

当前的列数

参见

setColumnCount(int)

columnSpec

 

public int getOrientation ()

返回当前方向。

相关XML属性

android:orientation

返回值

HORIZONTAL 或者 VERTICAL

参见

setOrientation(int)

 

public int getRowCount ()

返回当前的行数。通过 setRowCount(int)方法最后一次设置的值,如果没有这样的值被设置,返回在rowSpec定义中的每一个上限的最大值。

相关XML

android:rowCount

返回值

返回当前的行数。

参见

setRowCount(int)

rowSpec

public boolean getUseDefaultMargins ()

返回是否GridLayout分配时候,没有相应布局参数定义的默认边距。

相关XML属性

android:useDefaultMargins

返回值

如果分配默认的边距返回ture

参见

setUseDefaultMargins(boolean)

public boolean isColumnOrderPreserved ()

返回是否通过表格索引顺序定制列边界。

相关XML属性

android:columnOrderPreserved

返回值

如果列边界按照索引的顺序显示返回ture,否则返回false

参见

setColumnOrderPreserved(boolean)

public boolean isRowOrderPreserved ()

返回是否通过表格索引顺序定制行边界

相关XML属性

android:rowOrderPreserved

返回值

如果行边界按照索引顺序显示返回ture,否则返回false

参见

setRowOrderPreserved(boolean)

public void requestLayout ()

当无效的视图布局发生变化时候调用它,将通过视图树进行布局传递。

public void setAlignmentMode (int alignmentMode)

设置该容器中所有子视图之间的对齐方式

默认的值是ALIGN_MARGINS.

相关XML属性

android:alignmentMode

参数

alignmentMode       ALIGN_BOUNDS 或者 ALIGN_MARGINS

参见

ALIGN_BOUNDS

ALIGN_MARGINS

getAlignmentMode()

public void setColumnCount (int columnCount)

列数是仅用于当没有一个布局参数指定时候,生成默认的列/行索引。

相关XML属性

android:columnCount

参数

columnCount   列的数量.

参见

getColumnCount()

columnSpec

public void setColumnOrderPreserved (boolean columnOrderPreserved)

当此属性为true,GridLayout的是被迫使他们相关的网格指数在视图中以升序顺序放置列的边界。

当此属性是false,GridLayout是放置在任何最适合给定的约束水平列边界的顺序。

此属性的默认值是true。

相关XML属性

android:columnOrderPreserved

参数

columnOrderPreserved   用ture是被迫使他们相关的网格指数在视图中以升序顺序放置列的边界。

参见

isColumnOrderPreserved()

public void setOrientation (int orientation)

Orientation是仅用于当没有一个布局参数指定时候,生成默认的列/行索引

默认的属性值是HORIZONTAL

相关XML属性

android:orientation

参数

orientation       HORIZONTAL 或者 VERTICAL

参见

getOrientation()

public void setRowCount (int rowCount)

RowCount是仅用于当没有一个布局参数指定时候,生成默认的列/行索引

相关XML属性

android:rowCount

参数

rowCount         行数

参见

getRowCount()

rowSpec

public void setRowOrderPreserved (boolean rowOrderPreserved)

当此属性为true,GridLayout是强制他们相关的网格指数在视图中以升序顺序放置行的边界。

当此属性是false,GridLayout是放置在任何最适合给定的约束水平行边界的顺序。

此属性的默认值是true。

相关XML属性

android:rowOrderPreserved

参数

rowOrderPreserved 用ture是强制他们相关的网格指数在视图中以升序顺序放置列的边界。

参见

isRowOrderPreserved ()

public void setUseDefaultMargins (boolean useDefaultMargins)

当设置为true, GridLayout根据子视图的的视觉特征分配在子视图周围的默认边距,每个定义的边距,可独立分配到相应的布局参数覆盖。

如果为false,所有边距的默认值是零。

当设置为true时,考虑设置的alignmentMode属性值ALIGN_BOUNDS。

此属性的默认值是false。

相关XML属性

android:useDefaultMargins

参数

useDefaultMargins 使用true分配默认的边距

参见

getUseDefaultMargins()

setAlignmentMode(int)

public static GridLayout.Spec spec (int start, GridLayout.Alignment alignment)

返回一个Spec,其中:

*   spec.span = [start, start + 1]

*   spec.alignment = alignment

参数

start         the           开始索引

alignment         对齐方式

public static GridLayout.Spec spec (int start, int size)

返回一个Spec,其中:

*   spec.span = [start, start + size]

参数

start                   开始位置

size          大小

public static GridLayout.Spec spec (int start, int size, GridLayout.Alignment alignment)

返回一个Spec,其中:

*   spec.span = [start, start + size]

*   spec.alignment = alignment

参数

start                            开始位置

size                     大小

alignment         对齐方式

public static GridLayout.Spec spec (int start)

返回一个Spec,其中:

*   spec.span = [start, start + 1]

参数

start                            开始索引

保护方法

protected GridLayout.LayoutParams generateDefaultLayoutParams ()

返回一组默认布局参数。没有设置布局参数执行addview(View)时,这些参数被请求时返回null,并抛出一个异常。

返回值

一组默认布局参数或者null

protected GridLayout.LayoutParams generateLayoutParams (ViewGroup.LayoutParams p)

返回一组合法的受支持的布局参数。当一个ViewGroup传递一个布局参数没有通过checkLayoutParams(android.view.ViewGroup.LayoutParams)检测的视图时,此方法被调用。此方法会返回一组新的适合当前ViewGroup的布局参数,可能从指定的一组布局参数中复制适当的属性。

参数

p 被转换成一组适合当前 ViewGroup的布局参数.

返回值

一个ViewGroup.LayoutParams的实例或者其中的一个子节点

补充

文章精选

Android 4.0新增Space及GridLayout初谈

GridLayout.Alignment

译者署名:獨鍆躌踄

译者链接:http://www.cnblogs.com/mxgsa/

版本:Android 4.0 r1

结构

继承关系

public static abstract class GridLayout.Alignment extends Object

java.lang.Object

android.widget.GridLayout.Alignment

类概述

对齐指定视图应放置在一个单元格组的某个位置以及尺寸大小。

GridLayout.LayoutParams类包含一个rowSpec和columnSpec,其中每个都包含对齐。整体单元格组由这两种沿每个轴单独对齐的方式指定。

GridLayout类定义使用最常见的对齐方式,在总体布局上,左,下,右,居中,基线,填充。

Android——GridLayout的更多相关文章

  1. android GridLayout布局

    android4.0版本后新增了一个GridLayout,它使用虚细线将布局划分为行.列和单元格,也支持一个控件在行.列上都有交错排列,其实用方法和LinearLayout,Relativelayou ...

  2. Android——gridLayout(网格布局)

    <?xml version="1.0" encoding="utf-8"?> <GridLayout xmlns:android=" ...

  3. 《Pro Android Graphics》读书笔记之第六节

    Android UI Layouts: Graphics Design Using the ViewGroup Class Android ViewGroup Superclass: A Founda ...

  4. Android中帧布局-FrameLayout和网格布局-GridLayout

    帧布局-FrameLayout 一.概念 帧布局中,容器为每个加入其中的空间创建一个空白的区域(成为一帧).每个空间占据一帧,这些帧会按gravity属性自动对齐. 帧布局的效果是将其中的所有空间叠加 ...

  5. Android 布局之GridLayout

    Android 布局之GridLayout 1 GridLayout简介 GridLayout是Android4.0新提供的网格矩阵形式的布局控件. GridLayout的继承关系如下:java.la ...

  6. android——学习:网格布局——GridLayout

    Android一开始就提供了几种布局控件,如线性布局LinearLayout.相对布局RelativeLayout和表格布局TableLayout等,但在很多情况下,这些布局控件是不能满足要求的,因此 ...

  7. Android中GridLayout与GridView区别

    GridLayout初步研究:可以这么说这个布局绝对是开发者的福音,它大大简化了对复杂布局的处理,包括性能提高不是一倍两倍.它与GridView是完全不同的概念, GridView是一种适配器布局,它 ...

  8. Android开发UI之GridLayout的使用

    1.GridLayout 官网截图 GridLayout包含的属性如下: android:alignmentMode属性说明:当设置alignMargins,使视图的外边界之间进行校准.可以取以下值: ...

  9. Android UI -- 布局介绍(布局包括FrameLayout, LinearLayout, RelativeLayout, GridLayout)

    首先介绍常用布局类 FrameLayout 最简单的布局管理器. 这个布局管理类有几个特性: 添加组件默认在左上角的. 如果添加多个组件会叠加到一起,并且都在左上角.(可以通过一gravity属性改变 ...

随机推荐

  1. 统一使用GPT分区表,安装MAC 10.10 和 Win8.1 pro双系统

    步骤一: 为Mac OS 分区,为其它分区留白1,使用OSX Mavericks制作的Mac安装U盘按住Option键启动:2,选择安装Mavericks盘符:3,进入OSX安装启动界面,选择磁盘工具 ...

  2. A4纸网页打印——宽高设置

    一.在公制长度单位与屏幕分辨率进行换算时,必须用到一个DPI(Dot Per Inch)指标. 经过我仔细的测试,发现了网页打印中,默认采用的是96dpi,并非传闻的72dpi . A4纸张的尺寸是2 ...

  3. inupt textarea提示文字(点击消失,不输入恢复)及限制字数

    效果: input: textarea: 限100字 源码: input: <input name="textfield" type="text" max ...

  4. org.hibernate.MappingException: Unknown entity常见问题。回顾笔记,以前没记,现在补上,xiaochao写的蛮好的直接给转载了。

    转自http://www.blogjava.net/xiaochao/articles/hibernatetopic.html. 官方说明如下: Hibernate遵循EJB3.0实体bean的注解规 ...

  5. mac下多个php版本快速切换的方法是怎么样

    一.使用brew安装php多版本方法# brew install php56# brew install php70二.安装切换工具# brew install php-version# source ...

  6. node-webkit 新建实例窗口间通信问题解决办法

    终于弄明白这问题了,只要在js文件里加上段代码,就可解决两窗口间通信问题. var str = { username: User.name, userrole: User.role }; var ne ...

  7. js实现通用的微信分享组件示例

    一.可定义的信息 1.分享时显示的LOGO:2.分享LOGO的宽度:3.分享LOGO的高度:4.分享出去显示的标题(默认调用网页标题):5.分享出去显示的描述(默认调用网页标题):6.分享链接(默认为 ...

  8. SQLITE3 使用总结

    转自: http://blog.chinaunix.net/uid-8447633-id-3321394.html 前序: Sqlite3 的确很好用.小巧.速度快.但是因为非微软的产品,帮助文档总觉 ...

  9. 使用Jil序列化JSON提升Asp.net web api 性能

    JSON序列化无疑是Asp.net web api 里面性能提升最重要的一环. 在Asp.net web api 里面我们可以插入自定义的MediaTypeFormatter(媒体格式化器), 说白了 ...

  10. mysqldump备份过程中都干了些什么

    mysqldump备份方便,易读,功能丰富,相信大家都有 使用过这个命令进行备份,但是这个命令在备份的过程中都做了写什么呢,下面打开general_log进行查看: 1.登录mysql命令行客户端: ...