- android
- android.accessibilityservice
- android.accounts
- android.content
- android.database.sqlite
- android.graphics
- android.location
- android.media
- android.net
- android.os
- android.text
- android.view
- android.view.inputmethod
- android.widget
- AbsListView
- AbsoluteLayout
- AbsSeekBar
- AbsSpinner
- AdapterView
- AnalogClock
- BaseAdapter
- BaseExpandableListAdapter
- Button
- CheckBox
- CheckedTextView
- Checkable
- Chronometer
- CompoundButton
- CursorAdapter
- CursorTreeAdapter
- DatePicker
- DialerFilter
- DigitalClock
- EditText
- Filter
- Filter.FilterListener
- Filter.FilterResults
- ExpandableListAdapter
- Filterable
- Gallery
- Gallery.LayoutParams
- GridView
- GridLayout
- RadioGroup
- ImageView
- HorizontalScrollView
- ImageButton
- ImageSwitcher
- FilterQueryProvider
- ListAdapter
- ListView
- MediaController
- QuickContactBadge
- RadioButton
- RatingBar
- RelativeLayout
- RemoteViews
- ResourceCursorAdapter
- ResourceCursorTreeAdapter
- Scroller
- ScrollView
- SearchView
- SeekBar
- SeekBar.OnSeekBarChangeListener
- SimpleAdapter
- SimpleCursorAdapter
- SimpleCursorTreeAdapter
- SimpleExpandableListAdapter
- SlidingDrawer
- Spinner
- SpinnerAdapter
- WrapperListAdapter
- TabHost
- TabHost.TabSpec
- TextView
- TimePicker
- Toast
- TableLayout
- TableRow
- TableRow.LayoutParams
- TabWidget
- TextSwitcher
- ToggleButton
- TwoLineListItem
- VideoView
- ViewAnimator
- ViewFlipper
- ViewSwitcher
- ZoomButtonsController
- ZoomButton
- ZoomControls
- dalvik.system
GridLayout
GridLayout
版本:Android 4.0 r1
结构
继承关系
public class GridLayout extends ViewGroup
java.lang.Object
android.view.View
android.view.ViewGroup
android.widget.GridLayout
类概述
(摘自 这里 。)
该布局把子视图存放在一个矩形网格中。
网格是由被无数虚细线分割成多个单元格的可视区域组成。贯穿整个 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 子视图约束相关的单元格组的组成部分。当使用这些技术,记住,单元格组可能定义重叠。
为 GridLayout 的使用布局参数的完整描述 GridLayout.LayoutParams。
XML属性
属性名称 | 描述 | |||||||||
android:alignmentMode | 当设置 alignMargins,使视图的外边界之间进行校准,定义其边距,当设置 alignBounds,使视图的边界之间进行校准,默认设置 alignMargins。
| |||||||||
android:columnCount | 自动定位子视图时创建的最大列数 | |||||||||
android:columnOrderPreserved | 当设置为 true,使列边界显示的顺序和列索引的顺序相同。默认是 true。 | |||||||||
android:orientation | Orientation 属性在布局时候不被使用,它仅当子视图布局参数没有指定的时候分配行和列,GridLayout 在这种情况下和 LinearLayout 使用方法一样,根据标志的值将所有组件放在单个行或者放在当个列中。在水平情况下,当一行的所有列都填充满时,columnCount 属性额外提供创建新行。同样在垂直情况下,rowCount 属性有相同的作用,默认是水平的。
| |||||||||
android:rowCount | 自动定位子视图时创建的最大行数 | |||||||||
android:rowOrderPreserved | 当设置为 true,使行边界显示的顺序和行索引的顺序相同。默认是 true。 | |||||||||
android:useDefaultMargins | 当设置 ture,当没有指定视图的布局参数时,告诉 GridLayout 使用默认的边距。默认值是 false。 |
常量
类型 | 属性名称 | 描述 |
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 属性
返回值
对齐方式; ALIGN_BOUNDS
或者 ALIGN_MARGINS
参见
public int getColumnCount ()
返回当前的列数。通过 setColumnCount(int)方法最后一次设置的值,如果没有这样的值被设置,返回在 columnSpec 定义中的每一个上限的最大值。
相关 XML 属性
返回值
当前的列数
参见
public int getOrientation ()
返回当前方向。
相关 XML 属性
返回值
参见
public int getRowCount ()
返回当前的行数。通过 setRowCount(int)方法最后一次设置的值,如果没有这样的值被设置,返回在 rowSpec 定义中的每一个上限的最大值。
相关 XML
返回值
返回当前的行数。
参见
public boolean getUseDefaultMargins ()
返回是否 GridLayout 分配时候,没有相应布局参数定义的默认边距。
相关 XML 属性
返回值
如果分配默认的边距返回 ture
参见
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,其中:
l spec.span = [start, start + 1]
l spec.alignment = alignment
参数
start the 开始索引
alignment 对齐方式
public static GridLayout.Spec spec (int start, int size)
返回一个 Spec,其中:
l spec.span = [start, start + size]
参数
start 开始位置
size 大小
public static GridLayout.Spec spec (int start, int size, GridLayout.Alignment alignment)
返回一个 Spec,其中:
l spec.span = [start, start + size]
l spec.alignment = alignment
参数
start 开始位置
size 大小
alignment 对齐方式
public static GridLayout.Spec spec (int start)
返回一个 Spec,其中:
l 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 的实例或者其中的一个子节点
补充
文章精选
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论