• Android——GridLayout


    转载自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列的网格在运行中包含0N N+1个索引,不管怎么配置GridLayout 网格索引0是固定网格容器的前边距,索引N是固定容器的后边距(考虑后填充)。

     

    行和列的规格

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

     

    默认单元格分配

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

     

    空间(Place)

    子视图之间的空间可能会通过使用专用的空间视图的实例,或通过设置leftMargintopMarginrightMarginbottomMargin布局参数后指定。当设置为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

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

    FILL

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

    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 ()

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

    相关XML属性

    android:columnCount

    返回值

    当前的列数

    参见

    setColumnCount(int)

    columnSpec

     

    public int getOrientation ()

    返回当前方向。

    相关XML属性

    android:orientation

             返回值

     HORIZONTAL 或者 VERTICAL

    参见

    setOrientation(int)

     

    public int getRowCount ()

    返回当前的行数。通过 setRowCountint)方法最后一次设置的值,如果没有这样的值被设置,返回在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)

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

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

    此属性的默认值是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)

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

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

    此属性的默认值是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 ()

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

    返回值

    一组默认布局参数或者null

     

    protected GridLayout.LayoutParams generateLayoutParams (ViewGroup.LayoutParams p)

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

    参数

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

    返回值

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

     

    补充

             文章精选

                       Android 4.0新增SpaceGridLayout初谈

     

    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类包含一个rowSpeccolumnSpec,其中每个都包含对齐。整体单元格组由这两种沿每个轴单独对齐的方式指定。

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

    逃避不一定躲得过,面对不一定最难过
  • 相关阅读:
    LVS的DR模式测试案例<仅个人记录>
    awk命令小结
    iptables命令提取总结,包含扩展模块<取自朱双印博客>
    如何配置nginx屏蔽恶意域名解析指向《包含隐藏nginx版本号》
    CentOS升级OpenSSL至OpenSSL 1.1.0f版本<其中有遇到libcrypto.so的问题>
    U-Mail企业邮箱如何导入授权文件
    Linux花生壳使用篇
    windows远程桌面连接时,显示发生身份验证错误,给函数提供的身份无效
    批量屏蔽符合条件的IP地址,支持添加白名单,IP段,增量,大于指定次数的IP
    rsync 定时备份<crontab+backrsync.sh> 简陋版
  • 原文地址:https://www.cnblogs.com/yangzhenlong/p/3213706.html
Copyright © 2020-2023  润新知