GridLayout
class GridLayout : ViewGroup
A layout that places its children in a rectangular grid.
The grid is composed of a set of infinitely thin lines that separate the viewing area into cells. Throughout the API, grid lines are referenced by grid indices. A grid with N columns has N + 1 grid indices that run from 0 through N inclusive. Regardless of how GridLayout is configured, grid index 0 is fixed to the leading edge of the container and grid index N is fixed to its trailing edge (after padding is taken into account).
rowSpec and columnSpec layout parameters. Each spec defines the set of rows or columns that are to be occupied; and how children should be aligned within the resulting group of cells. Although cells do not normally overlap in a GridLayout, GridLayout does not prevent children being defined to occupy the same cell or group of cells. In this case however, there is no guarantee that children will not themselves overlap after the layout operation completes. Default Cell Assignment If a child does not specify the row and column indices of the cell it wishes to occupy, GridLayout assigns cell locations automatically using its: orientation, rowCount and columnCount properties. Space Space between children may be specified either by using instances of the dedicated android.widget.Space view or by setting the leftMargin, topMargin, rightMargin and bottomMargin layout parameters. When the useDefaultMargins property is set, default margins around children are automatically allocated based on the prevailing UI style guide for the platform. Each of the margins so defined may be independently overridden by an assignment to the appropriate layout parameter. Default values will generally produce a reasonable spacing between components but values may change between different releases of the platform. Excess Space Distribution GridLayout's distribution of excess space accommodates the principle of weight. In the event that no weights are specified, columns and rows are taken as flexible if their views specify some form of alignment within their groups.
The flexibility of a view is therefore influenced by its alignment which is, in turn, typically defined by setting the gravity property of the child's layout parameters. If either a weight or alignment were defined along a given axis then the component is taken as flexible in that direction. If no weight or alignment was set, the component is instead assumed to be inflexible.
Multiple components in the same row or column group are considered to act in parallel. Such a group is flexible only if all of the components within it are flexible. Row and column groups that sit either side of a common boundary are instead considered to act in series. The composite group made of these two elements is flexible if one of its elements is flexible.
To make a column stretch, make sure all of the components inside it define a weight or a gravity. To prevent a column from stretching, ensure that one of the components in the column does not define a weight or a gravity.
When the principle of flexibility does not provide complete disambiguation, GridLayout's algorithms favour rows and columns that are closer to its right and bottom edges. To be more precise, GridLayout treats each of its layout parameters as a constraint in the a set of variables that define the grid-lines along a given axis. During layout, GridLayout solves the constraints so as to return the unique solution to those constraints for which all variables are less-than-or-equal-to the corresponding value in any other valid solution.
Interpretation of GONE For layout purposes, GridLayout treats views whose visibility status isGONE, as having zero width and height. This is subtly different from the policy of ignoring views that are marked as GONE outright. If, for example, a gone-marked view was alone in a column, that column would itself collapse to zero width if and only if no gravity was defined on the view. If gravity was defined, then the gone-marked view has no effect on the layout and the container should be laid out as if the view had never been added to it. GONE views are taken to have zero weight during excess space distribution.
These statements apply equally to rows as well as columns, and to groups of rows or columns.
See GridLayout.LayoutParams for a full description of the layout parameters used by GridLayout.
name android:orientation
name android:rowCount
name android:columnCount
name android:useDefaultMargins
name android:rowOrderPreserved
name android:columnOrderPreserved
Summary
Nested types |
|---|
abstract class GridLayout.AlignmentAlignments specify where a view should be placed within a cell group and what size it should be. |
|
Layout information associated with each of the children of a GridLayout. |
class GridLayout.SpecA Spec defines the horizontal or vertical characteristics of a group of cells. |
Constants |
|
|---|---|
const Int |
ALIGN_BOUNDS = 0This constant is an |
const Int |
ALIGN_MARGINS = 1This constant is an |
const GridLayout.Alignment! |
Indicates that a view should be aligned with the baselines of the other views in its cell group. |
const GridLayout.Alignment! |
Indicates that a view should be aligned with the bottom edges of the other views in its cell group. |
const GridLayout.Alignment! |
Indicates that a view should be centered with the other views in its cell group. |
const GridLayout.Alignment! |
Indicates that a view should be aligned with the end edges of the other views in its cell group. |
const GridLayout.Alignment! |
Indicates that a view should expanded to fit the boundaries of its cell group. |
const Int |
HORIZONTAL = 0The horizontal orientation. |
const GridLayout.Alignment! |
Indicates that a view should be aligned with the left edges of the other views in its cell group. |
const GridLayout.Alignment! |
Indicates that a view should be aligned with the right edges of the other views in its cell group. |
const GridLayout.Alignment! |
Indicates that a view should be aligned with the start edges of the other views in its cell group. |
const GridLayout.Alignment! |
Indicates that a view should be aligned with the top edges of the other views in its cell group. |
const Int |
UNDEFINED = -2147483648The constant used to indicate that a value is undefined. |
const Int |
VERTICAL = 1The vertical orientation. |
Public constructors |
|---|
GridLayout(context: Context!) |
GridLayout(context: Context!, attrs: AttributeSet!) |
GridLayout(context: Context!, attrs: AttributeSet!, defStyle: Int) |
Public functions |
|
|---|---|
GridLayout.LayoutParams! |
generateLayoutParams(attrs: AttributeSet!) |
Int |
Returns the alignment mode. |
Int |
Returns the current number of columns. |
Int |
Returns the current orientation. |
Printer! |
Return the printer that will log diagnostics from this layout. |
Int |
Returns the current number of rows. |
Boolean |
Returns whether or not this GridLayout will allocate default margins when no corresponding layout parameters are defined. |
Boolean |
Returns whether or not column boundaries are ordered by their grid indices. |
Boolean |
Returns whether or not row boundaries are ordered by their grid indices. |
Unit |
|
Unit |
setAlignmentMode(alignmentMode: Int)Sets the alignment mode to be used for all of the alignments between the children of this container. |
Unit |
setColumnCount(columnCount: Int)ColumnCount is used only to generate default column/column indices when they are not specified by a component's layout parameters. |
Unit |
setColumnOrderPreserved(columnOrderPreserved: Boolean)When this property is |
Unit |
setOrientation(orientation: Int)GridLayout uses the orientation property for two purposes: |
Unit |
setPrinter(printer: Printer!)Set the printer that will log diagnostics from this layout. |
Unit |
setRowCount(rowCount: Int)RowCount is used only to generate default row/column indices when they are not specified by a component's layout parameters. |
Unit |
setRowOrderPreserved(rowOrderPreserved: Boolean)When this property is |
Unit |
setUseDefaultMargins(useDefaultMargins: Boolean)When |
java-static GridLayout.Spec! |
Return a Spec, |
java-static GridLayout.Spec! |
spec(start: Int, alignment: GridLayout.Alignment!)Return a Spec, |
java-static GridLayout.Spec! |
Return a Spec, |
java-static GridLayout.Spec! |
Equivalent to: |
java-static GridLayout.Spec! |
spec(start: Int, alignment: GridLayout.Alignment!, weight: Float)Equivalent to: |
java-static GridLayout.Spec! |
spec(start: Int, size: Int, alignment: GridLayout.Alignment!)Equivalent to: |
java-static GridLayout.Spec! |
Equivalent to: |
java-static GridLayout.Spec! |
spec(start: Int, size: Int, alignment: GridLayout.Alignment!, weight: Float)Return a Spec, |
Protected functions |
|
|---|---|
Boolean |
|
GridLayout.LayoutParams! |
|
GridLayout.LayoutParams! |
|
Unit |
|
Unit |
Inherited Constants |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Constants
ALIGN_BOUNDS
const val ALIGN_BOUNDS = 0: Int
This constant is an alignmentMode. When the alignmentMode is set to ALIGN_BOUNDS, alignment is made between the edges of each component's raw view boundary: i.e. the area delimited by the component's: top, left, bottom and right properties.
For example, when GridLayout is in ALIGN_BOUNDS mode, children that belong to a row group that uses TOP alignment will all return the same value when their getTop method is called.
| See also | |
|---|---|
setAlignmentMode |
ALIGN_MARGINS
const val ALIGN_MARGINS = 1: Int
This constant is an alignmentMode. When the alignmentMode is set to ALIGN_MARGINS, the bounds of each view are extended outwards, according to their margins, before the edges of the resulting rectangle are aligned.
For example, when GridLayout is in ALIGN_MARGINS mode, the quantity top - layoutParams.topMargin is the same for all children that belong to a row group that uses TOP alignment.
| See also | |
|---|---|
setAlignmentMode |
BASELINE
const val BASELINE: GridLayout.Alignment!
Indicates that a view should be aligned with the baselines of the other views in its cell group. This constant may only be used as an alignment in rowSpecs.
| See also | |
|---|---|
getBaseline |
BOTTOM
const val BOTTOM: GridLayout.Alignment!
Indicates that a view should be aligned with the bottom edges of the other views in its cell group.
CENTER
const val CENTER: GridLayout.Alignment!
Indicates that a view should be centered with the other views in its cell group. This constant may be used in both rowSpecs and columnSpecs.
END
const val END: GridLayout.Alignment!
Indicates that a view should be aligned with the end edges of the other views in its cell group.
FILL
const val FILL: GridLayout.Alignment!
Indicates that a view should expanded to fit the boundaries of its cell group. This constant may be used in both rowSpecs and columnSpecs.
LEFT
const val LEFT: GridLayout.Alignment!
Indicates that a view should be aligned with the left edges of the other views in its cell group.
RIGHT
const val RIGHT: GridLayout.Alignment!
Indicates that a view should be aligned with the right edges of the other views in its cell group.
START
const val START: GridLayout.Alignment!
Indicates that a view should be aligned with the start edges of the other views in its cell group.
TOP
const val TOP: GridLayout.Alignment!
Indicates that a view should be aligned with the top edges of the other views in its cell group.
UNDEFINED
const val UNDEFINED = -2147483648: Int
The constant used to indicate that a value is undefined. Fields can use this value to indicate that their values have not yet been set. Similarly, methods can return this value to indicate that there is no suitable value that the implementation can return. The value used for the constant (currently MIN_VALUE) is intended to avoid confusion between valid values whose sign may not be known.
Public constructors
Public functions
generateLayoutParams
fun generateLayoutParams(attrs: AttributeSet!): GridLayout.LayoutParams!
getAlignmentMode
fun getAlignmentMode(): Int
Returns the alignment mode.
name android:alignmentMode
| Returns | |
|---|---|
Int |
the alignment mode; either |
| See also | |
|---|---|
ALIGN_BOUNDS |
|
ALIGN_MARGINS |
|
setAlignmentMode |
getColumnCount
fun getColumnCount(): Int
Returns the current number of columns. This is either the last value that was set with setColumnCount or, if no such value was set, the maximum value of each the upper bounds defined in columnSpec.
name android:columnCount
| Returns | |
|---|---|
Int |
the current number of columns |
| See also | |
|---|---|
setColumnCount |
|
columnSpec |
getOrientation
fun getOrientation(): Int
Returns the current orientation.
name android:orientation
| Returns | |
|---|---|
Int |
either |
| See also | |
|---|---|
setOrientation |
getPrinter
fun getPrinter(): Printer!
Return the printer that will log diagnostics from this layout.
| Returns | |
|---|---|
Printer! |
the printer associated with this view |
| See also | |
|---|---|
setPrinter |
getRowCount
fun getRowCount(): Int
Returns the current number of rows. This is either the last value that was set with setRowCount or, if no such value was set, the maximum value of each the upper bounds defined in rowSpec.
name android:rowCount
| Returns | |
|---|---|
Int |
the current number of rows |
| See also | |
|---|---|
setRowCount |
|
rowSpec |
getUseDefaultMargins
fun getUseDefaultMargins(): Boolean
Returns whether or not this GridLayout will allocate default margins when no corresponding layout parameters are defined.
name android:useDefaultMargins
| Returns | |
|---|---|
Boolean |
|
| See also | |
|---|---|
setUseDefaultMargins |
isColumnOrderPreserved
fun isColumnOrderPreserved(): Boolean
Returns whether or not column boundaries are ordered by their grid indices.
name android:columnOrderPreserved
| Returns | |
|---|---|
Boolean |
|
| See also | |
|---|---|
setColumnOrderPreserved |
isRowOrderPreserved
fun isRowOrderPreserved(): Boolean
Returns whether or not row boundaries are ordered by their grid indices.
name android:rowOrderPreserved
| Returns | |
|---|---|
Boolean |
|
| See also | |
|---|---|
setRowOrderPreserved |
setAlignmentMode
fun setAlignmentMode(alignmentMode: Int): Unit
Sets the alignment mode to be used for all of the alignments between the children of this container.
The default value of this property is ALIGN_MARGINS.
name android:alignmentMode
| Parameters | |
|---|---|
alignmentMode: Int |
either |
| See also | |
|---|---|
ALIGN_BOUNDS |
|
ALIGN_MARGINS |
|
getAlignmentMode |
setColumnCount
fun setColumnCount(columnCount: Int): Unit
ColumnCount is used only to generate default column/column indices when they are not specified by a component's layout parameters.
name android:columnCount
| Parameters | |
|---|---|
columnCount: Int |
the number of columns. |
| See also | |
|---|---|
getColumnCount |
|
columnSpec |
setColumnOrderPreserved
fun setColumnOrderPreserved(columnOrderPreserved: Boolean): Unit
When this property is true, GridLayout is forced to place the column boundaries so that their associated grid indices are in ascending order in the view.
When this property is false GridLayout is at liberty to place the horizontal column boundaries in whatever order best fits the given constraints.
The default value of this property is true.
name android:columnOrderPreserved
| Parameters | |
|---|---|
columnOrderPreserved: Boolean |
use |
| See also | |
|---|---|
isColumnOrderPreserved |
setOrientation
fun setOrientation(orientation: Int): Unit
GridLayout uses the orientation property for two purposes:
- To control the 'direction' in which default row/column indices are generated when they are not specified in a component's layout parameters.
- To control which axis should be processed first during the layout operation: when orientation is
HORIZONTALthe horizontal axis is laid out first.
If your layout contains a android.widget.TextView (or derivative: Button, EditText, CheckBox, etc.) which is in multi-line mode (the default) it is normally best to leave GridLayout's orientation as HORIZONTAL - because TextView is capable of deriving its height for a given width, but not the other way around.
Other than the effects above, orientation does not affect the actual layout operation of GridLayout, so it's fine to leave GridLayout in HORIZONTAL mode even if the height of the intended layout greatly exceeds its width.
The default value of this property is HORIZONTAL.
name android:orientation
| Parameters | |
|---|---|
orientation: Int |
either |
| See also | |
|---|---|
getOrientation |
setPrinter
fun setPrinter(printer: Printer!): Unit
Set the printer that will log diagnostics from this layout. The default value is created by android.util.LogPrinter.
| Parameters | |
|---|---|
printer: Printer! |
the printer associated with this layout |
| See also | |
|---|---|
getPrinter |
setRowCount
fun setRowCount(rowCount: Int): Unit
RowCount is used only to generate default row/column indices when they are not specified by a component's layout parameters.
name android:rowCount
| Parameters | |
|---|---|
rowCount: Int |
the number of rows |
| See also | |
|---|---|
getRowCount |
|
rowSpec |
setRowOrderPreserved
fun setRowOrderPreserved(rowOrderPreserved: Boolean): Unit
When this property is true, GridLayout is forced to place the row boundaries so that their associated grid indices are in ascending order in the view.
When this property is false GridLayout is at liberty to place the vertical row boundaries in whatever order best fits the given constraints.
The default value of this property is true.
name android:rowOrderPreserved
| Parameters | |
|---|---|
rowOrderPreserved: Boolean |
|
| See also | |
|---|---|
isRowOrderPreserved |
setUseDefaultMargins
fun setUseDefaultMargins(useDefaultMargins: Boolean): Unit
When true, GridLayout allocates default margins around children based on the child's visual characteristics. Each of the margins so defined may be independently overridden by an assignment to the appropriate layout parameter.
When false, the default value of all margins is zero.
When setting to true, consider setting the value of the alignmentMode property to ALIGN_BOUNDS.
The default value of this property is false.
name android:useDefaultMargins
| Parameters | |
|---|---|
useDefaultMargins: Boolean |
use |
spec
java-static fun spec(start: Int): GridLayout.Spec!
Return a Spec, spec, where:
spec.span = [start, start + 1]
To leave the start index undefined, use the value UNDEFINED.
| Parameters | |
|---|---|
start: Int |
the start index |
| See also | |
|---|---|
spec |
spec
java-static fun spec(start: Int, alignment: GridLayout.Alignment!): GridLayout.Spec!
Return a Spec, spec, where:
spec.span = [start, start + 1]spec.alignment = alignment
To leave the start index undefined, use the value UNDEFINED.
| Parameters | |
|---|---|
start: Int |
the start index |
alignment: GridLayout.Alignment! |
the alignment |
| See also | |
|---|---|
spec |
spec
java-static fun spec(start: Int, size: Int): GridLayout.Spec!
Return a Spec, spec, where:
spec.span = [start, start + size]
To leave the start index undefined, use the value UNDEFINED.
| See also | |
|---|---|
spec |
spec
java-static fun spec(start: Int, weight: Float): GridLayout.Spec!
Equivalent to: spec(start, 1, weight).
spec
java-static fun spec(start: Int, alignment: GridLayout.Alignment!, weight: Float): GridLayout.Spec!
Equivalent to: spec(start, 1, alignment, weight).
| Parameters | |
|---|---|
start: Int |
the start |
alignment: GridLayout.Alignment! |
the alignment |
weight: Float |
the weight |
spec
java-static fun spec(start: Int, size: Int, alignment: GridLayout.Alignment!): GridLayout.Spec!
Equivalent to: spec(start, size, alignment, 0f).
| Parameters | |
|---|---|
start: Int |
the start |
size: Int |
the size |
alignment: GridLayout.Alignment! |
the alignment |
spec
java-static fun spec(start: Int, size: Int, weight: Float): GridLayout.Spec!
Equivalent to: spec(start, 1, default_alignment, weight) - where default_alignment is specified in android.widget.GridLayout.LayoutParams.
spec
java-static fun spec(start: Int, size: Int, alignment: GridLayout.Alignment!, weight: Float): GridLayout.Spec!
Return a Spec, spec, where:
spec.span = [start, start + size]spec.alignment = alignmentspec.weight = weight
To leave the start index undefined, use the value UNDEFINED.
| Parameters | |
|---|---|
start: Int |
the start |
size: Int |
the size |
alignment: GridLayout.Alignment! |
the alignment |
weight: Float |
the weight |
Protected functions
generateDefaultLayoutParams
protected fun generateDefaultLayoutParams(): GridLayout.LayoutParams!
generateLayoutParams
protected fun generateLayoutParams(lp: ViewGroup.LayoutParams!): GridLayout.LayoutParams!