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
,网格索引N
固定在其后端(考虑填充后)。
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.
orientation
,
rowCount
and
columnCount
properties.
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.
因此,视图的柔性通过其,反过来,通常通过设置限定其取向影响gravity
孩子的布局参数的属性。 如果沿给定轴定义重量或对齐方式,则该部件在该方向上被视为灵活 。 如果没有设置重量或对齐方式,则该组件被假定为不灵活 。
同一行或列组中的多个组件被认为是并行工作的 。 只有组件内的所有组件都是灵活的,这样的组才是灵活的。 而是将位于公共边界两侧的行和列组视为串联 。 如果其中一个元素具有灵活性,那么由这两个元素组成的复合组是灵活的。
为了使柱子伸展,确保它内部的所有组件都定义了重量或重力。 要防止色谱柱拉伸,请确保色谱柱中的某个组分未定义重量或重力。
当灵活性原则没有提供完全的消歧时,GridLayout的算法更偏向于靠近其右边和底边的行和列。 更确切地说,GridLayout将它的每个布局参数作为一组变量的约束条件,这些变量定义了给定轴上的网格线。 在布局过程中,GridLayout解决了约束条件,以便将唯一的解决方案返回到所有变量小于或等于所有其他有效解决方案中相应值的约束条件。
GONE
, 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.
这些语句同样适用于行和列,以及行或列的组。
有关GridLayout使用的布局参数的完整说明,请参见 GridLayout.LayoutParams
。
Nested classes |
|
---|---|
class |
GridLayout.Alignment 对齐方式指定视图应放置在单元格组中的位置以及其大小。 |
class |
GridLayout.LayoutParams 布局信息与GridLayout的每个子节点相关联。 |
class |
GridLayout.Spec Spec规定了一组单元的水平或垂直特性。 |
XML attributes |
|
---|---|
android:alignmentMode |
When set to alignMargins, causes alignment to take place between the outer boundary of a view, as defined by its margins. |
android:columnCount |
The maxmimum number of columns to create when automatically positioning children. |
android:columnOrderPreserved |
When set to true, forces column boundaries to appear in the same order as column indices. |
android:orientation |
The orientation property is not used during layout. |
android:rowCount |
The maxmimum number of rows to create when automatically positioning children. |
android:rowOrderPreserved |
When set to true, forces row boundaries to appear in the same order as row indices. |
android:useDefaultMargins |
When set to true, tells GridLayout to use default margins when none are specified in a view's layout parameters. |
Inherited XML attributes |
|
---|---|
From class android.view.ViewGroup
|
|
From class android.view.View
|
Constants |
|
---|---|
int |
ALIGN_BOUNDS 这个常数是 |
int |
ALIGN_MARGINS 这个常数是 |
int |
HORIZONTAL 水平方向。 |
int |
UNDEFINED 用于指示值未定义的常量。 |
int |
VERTICAL 垂直方向。 |
Inherited constants |
---|
From class android.view.ViewGroup
|
From class android.view.View
|
Fields |
|
---|---|
public static final GridLayout.Alignment |
BASELINE 指示视图应与其单元组中其他视图的 基线对齐。 |
public static final GridLayout.Alignment |
BOTTOM 指示视图应与其单元组中其他视图的 底部边缘对齐。 |
public static final GridLayout.Alignment |
CENTER 指示视图应该以其单元格组中的其他视图 为中心 。 |
public static final GridLayout.Alignment |
END 指示视图应与其单元组中其他视图的 末端边缘对齐。 |
public static final GridLayout.Alignment |
FILL 指示视图应该展开以适合其单元组的边界。 |
public static final GridLayout.Alignment |
LEFT 指示视图应与其单元格组中其他视图的 左边缘对齐。 |
public static final GridLayout.Alignment |
RIGHT 指示视图应与其单元格组中其他视图的 右边缘对齐。 |
public static final GridLayout.Alignment |
START 指示视图应该与其单元格组中其他视图的 起始边缘对齐。 |
public static final GridLayout.Alignment |
TOP 指示视图应与其单元格组中其他视图的 顶部边缘对齐。 |
Inherited fields |
---|
From class android.view.View
|
Public constructors |
|
---|---|
GridLayout(Context context) |
|
GridLayout(Context context, AttributeSet attrs) |
|
GridLayout(Context context, AttributeSet attrs, int defStyleAttr) |
|
GridLayout(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) |
Public methods |
|
---|---|
GridLayout.LayoutParams |
generateLayoutParams(AttributeSet attrs) 根据提供的属性集返回一组新的布局参数。 |
CharSequence |
getAccessibilityClassName() 返回此对象的类名称以用于辅助功能。 |
int |
getAlignmentMode() 返回对齐模式。 |
int |
getColumnCount() 返回当前的列数。 |
int |
getOrientation() 返回当前的方向。 |
int |
getRowCount() 返回当前的行数。 |
boolean |
getUseDefaultMargins() 返回当没有定义相应的布局参数时,此GridLayout是否将分配默认边距。 |
boolean |
isColumnOrderPreserved() 返回列边界是否按其网格索引排序。 |
boolean |
isRowOrderPreserved() 返回行边界是否按其网格索引排序。 |
void |
onViewAdded(View child) 当新的孩子被添加到这个ViewGroup时调用。 |
void |
onViewRemoved(View child) 当从此ViewGroup中移除子视图时调用。 |
void |
requestLayout() 当事情发生变化时调用它,这已经使这个视图的布局无效。 |
void |
setAlignmentMode(int alignmentMode) 设置对齐模式以用于此容器的子项之间的所有对齐。 |
void |
setColumnCount(int columnCount) 当组件的布局参数未指定时,ColumnCount仅用于生成默认列/列索引。 |
void |
setColumnOrderPreserved(boolean columnOrderPreserved) 当此属性为 |
void |
setOrientation(int orientation) GridLayout使用orientation属性有两个目的:
|
void |
setRowCount(int rowCount) RowCount仅用于在组件的布局参数未指定它们时生成默认行/列索引。 |
void |
setRowOrderPreserved(boolean rowOrderPreserved) 当这个属性是 |
void |
setUseDefaultMargins(boolean useDefaultMargins) 当 |
static GridLayout.Spec |
spec(int start, float weight) 相当于: |
static GridLayout.Spec |
spec(int start) 返回规格,
要使开始索引未定义,请使用值 |
static GridLayout.Spec |
spec(int start, int size, GridLayout.Alignment alignment, float weight) 返回规格,
要使开始索引未定义,请使用值 |
static GridLayout.Spec |
spec(int start, GridLayout.Alignment alignment, float weight) 相当于: |
static GridLayout.Spec |
spec(int start, int size, GridLayout.Alignment alignment) 相当于: |
static GridLayout.Spec |
spec(int start, GridLayout.Alignment alignment) 返回规格,
要使开始索引未定义,请使用值 |
static GridLayout.Spec |
spec(int start, int size, float weight) 等同于: |
static GridLayout.Spec |
spec(int start, int size) 返回规格,
要使开始索引未定义,请使用值 |
Protected methods |
|
---|---|
boolean |
checkLayoutParams(ViewGroup.LayoutParams p) |
GridLayout.LayoutParams |
generateDefaultLayoutParams() 返回一组默认布局参数。 |
GridLayout.LayoutParams |
generateLayoutParams(ViewGroup.LayoutParams lp) 根据提供的布局参数返回一组安全的布局参数。 |
void |
onLayout(boolean changed, int left, int top, int right, int bottom) 当这个视图为每个孩子分配一个大小和位置时,从布局调用。 |
void |
onMeasure(int widthSpec, int heightSpec) 测量视图及其内容以确定测量宽度和测量高度。 |
Inherited methods |
|
---|---|
From class android.view.ViewGroup
|
|
From class android.view.View
|
|
From class java.lang.Object
|
|
From interface android.view.ViewParent
|
|
From interface android.view.ViewManager
|
|
From interface android.graphics.drawable.Drawable.Callback
|
|
From interface android.view.KeyEvent.Callback
|
|
From interface android.view.accessibility.AccessibilityEventSource
|
设置为alignMargins时,会导致对齐发生在视图的外边界之间,如边界所定义。 设置为alignBounds时,会导致视图边缘之间发生对齐。 默认值是alignMargins。 见setAlignmentMode(int)
。
必须是下列常数值之一。
Constant | Value | 描述 |
---|---|---|
alignBounds |
0 | Align the bounds of the children. See ALIGN_BOUNDS . |
alignMargins |
1 | Align the margins of the children. See ALIGN_MARGINS . |
这对应于全局属性资源符号 alignmentMode
。
相关方法:
自动定位子项时创建的最大列数。
必须是整数值,例如“ 100
”。
这也可能是对包含此类型值的资源(形式为“ @[package:]type:name
”)或主题属性(形式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 columnCount
。
相关方法:
设置为true时,强制列边界以与列索引相同的顺序显示。 默认值是true。 见setColumnOrderPreserved(boolean)
。
必须是布尔值,即“ true
”或“ false
”。
这也可能是对包含此类型值的资源(形式为“ @[package:]type:name
”)或主题属性(形式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 columnOrderPreserved
。
相关方法:
布局过程中不使用方向属性。 它只用于在未由子级布局参数指定的情况下分配行和列参数。 在这种情况下,GridLayout像LinearLayout一样工作; 根据此标志的值,将所有组件放在单行或单列中。 在水平情况下,可能会另外提供columnCount属性,以在行已满时强制创建新行。 rowCount属性可以在垂直情况下类似地使用。 默认是水平的。
必须是下列常数值之一。
Constant | Value | 描述 |
---|---|---|
horizontal |
0 | Defines an horizontal widget. |
vertical |
1 | Defines a vertical widget. |
这对应于全局属性资源符号 orientation
。
相关方法:
自动定位子项时要创建的最大行数。
必须是整数值,例如“ 100
”。
这也可能是对包含此类型值的资源(形式为“ @[package:]type:name
”)或主题属性(形式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 rowCount
。
相关方法:
设置为true时,强制行边界以与行索引相同的顺序出现。 默认值是true。 见setRowOrderPreserved(boolean)
。
必须是布尔值,可以是“ true
”或“ false
”。
这也可能是对包含此类型值的资源(形式为“ @[package:]type:name
”)或主题属性(形式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 rowOrderPreserved
。
相关方法:
设置为true时,告诉GridLayout在视图的布局参数中未指定任何值时使用默认边距。 默认值是false。 见setUseDefaultMargins(boolean)
。
必须是布尔值,可以是“ true
”或“ false
”。
这也可能是对包含此类型值的资源(形式为“ @[package:]type:name
”)或主题属性(形式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 useDefaultMargins
。
相关方法:
int ALIGN_BOUNDS
这个常数是alignmentMode
。 当alignmentMode
设定为ALIGN_BOUNDS
,对准每种组分的原料视图边界的边缘之间进行:即,通过该组件的限定的区域: top
, left
, bottom
和right
性质。
例如,当 GridLayout
处于 ALIGN_BOUNDS
模式时,属于使用 TOP
对齐的行组的子 TOP
将在调用 getTop()
方法时全部返回相同的值。
也可以看看:
常量值:0(0x00000000)
int ALIGN_MARGINS
这个常数是alignmentMode
。 当alignmentMode
设置为ALIGN_MARGINS
,每个视图的边界将根据其边距向外扩展,然后对齐所得矩形的边缘。
例如,当 GridLayout
处于 ALIGN_MARGINS
模式时,数量 top - layoutParams.topMargin
对属于使用 TOP
对齐的行组的所有子 top - layoutParams.topMargin
都是相同的。
也可以看看:
常数值:1(0x00000001)
int UNDEFINED
用于指示值未定义的常量。 字段可以使用此值来指示它们的值尚未设置。 同样,方法可以返回这个值来表明实现可以返回没有合适的值。 用于常量(当前为MIN_VALUE
)的值旨在避免标志可能MIN_VALUE
有效值之间的混淆。
常量值:-2147483648(0x80000000)
GridLayout.Alignment BASELINE
指示视图应与其单元组中其他视图的基线对齐。 此常数只能用作rowSpecs
的对齐rowSpecs
。
也可以看看:
GridLayout.Alignment CENTER
指示视图应该以其单元格组中的其他视图为中心 。 该常数可用于rowSpecs
和columnSpecs
。
GridLayout.Alignment FILL
指示视图应该展开以适合其单元组的边界。 该常数可用于rowSpecs
和columnSpecs
。
GridLayout (Context context, AttributeSet attrs)
Parameters | |
---|---|
context |
Context
|
attrs |
AttributeSet
|
GridLayout (Context context, AttributeSet attrs, int defStyleAttr)
Parameters | |
---|---|
context |
Context
|
attrs |
AttributeSet
|
defStyleAttr |
int
|
GridLayout (Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)
Parameters | |
---|---|
context |
Context
|
attrs |
AttributeSet
|
defStyleAttr |
int
|
defStyleRes |
int
|
GridLayout.LayoutParams generateLayoutParams (AttributeSet attrs)
根据提供的属性集返回一组新的布局参数。
Parameters | |
---|---|
attrs |
AttributeSet : the attributes to build the layout parameters from |
Returns | |
---|---|
GridLayout.LayoutParams |
an instance of ViewGroup.LayoutParams or one of its descendants |
CharSequence getAccessibilityClassName ()
返回此对象的类名称以用于辅助功能。 如果子类正在实现的东西应该被视为一个全新的视图类,当它被可访问性使用时,子类只应该覆盖这个子类,与它所源自的类无关。 这用于填写AccessibilityNodeInfo.setClassName
。
Returns | |
---|---|
CharSequence |
int getAlignmentMode ()
返回对齐模式。
相关XML属性:
Returns | |
---|---|
int |
the alignment mode; either ALIGN_BOUNDS or ALIGN_MARGINS |
int getColumnCount ()
返回当前的列数。 这是setColumnCount(int)
中设置的最后一个值,或者如果没有设置这样的值,则是columnSpec
定义的每个上限的columnSpec
。
相关XML属性:
Returns | |
---|---|
int |
the current number of columns |
也可以看看:
int getOrientation ()
返回当前的方向。
相关XML属性:
Returns | |
---|---|
int |
either HORIZONTAL or VERTICAL |
也可以看看:
int getRowCount ()
返回当前的行数。 这是用setRowCount(int)
设置的最后一个值,或者如果没有设置这样的值,则在rowSpec
定义的每个上限的rowSpec
。
相关XML属性:
Returns | |
---|---|
int |
the current number of rows |
也可以看看:
boolean getUseDefaultMargins ()
返回当没有定义相应的布局参数时,此GridLayout是否将分配默认边距。
相关XML属性:
Returns | |
---|---|
boolean |
true if default margins should be allocated |
boolean isColumnOrderPreserved ()
返回列边界是否按其网格索引排序。
相关XML属性:
Returns | |
---|---|
boolean |
true if column boundaries must appear in the order of their indices, false otherwise |
boolean isRowOrderPreserved ()
返回行边界是否按其网格索引排序。
相关XML属性:
Returns | |
---|---|
boolean |
true if row boundaries must appear in the order of their indices, false otherwise |
void onViewAdded (View child)
当新的孩子被添加到这个ViewGroup时调用。 覆盖应该总是调用super.onViewAdded。
Parameters | |
---|---|
child |
View : the added child view |
void onViewRemoved (View child)
当从此ViewGroup中移除子视图时调用。 覆盖应该总是调用super.onViewRemoved。
Parameters | |
---|---|
child |
View : the removed child view |
void requestLayout ()
当事情发生变化时调用它,这已经使这个视图的布局无效。 这将安排视图树的布局传递。 当视图层次结构当前处于布局阶段( isInLayout()
时,不应调用此视图层次结构( isInLayout()
。如果发生布局,则可以在当前布局阶段结束时isInLayout()
请求(然后布局将再次运行),或者在当前帧结束之后绘制并发生下一个布局。
覆盖此方法的子类应调用超类方法以正确处理可能的布局错误请求。
void setAlignmentMode (int alignmentMode)
设置对齐模式以用于此容器的子项之间的所有对齐。
此属性的默认值是 ALIGN_MARGINS
。
相关XML属性:
Parameters | |
---|---|
alignmentMode |
int : either ALIGN_BOUNDS or ALIGN_MARGINS |
void setColumnCount (int columnCount)
当组件的布局参数未指定时,ColumnCount仅用于生成默认列/列索引。
相关XML属性:
Parameters | |
---|---|
columnCount |
int : the number of columns. |
也可以看看:
void setColumnOrderPreserved (boolean columnOrderPreserved)
当此属性为 true
,GridLayout被迫放置列边界,以便它们的 true
在视图中以升序排列。
当此属性为 false
GridLayout可自由将水平列的边界以任何最适合给定约束的顺序放置。
此属性的默认值是 true
。
相关XML属性:
Parameters | |
---|---|
columnOrderPreserved |
boolean : use true to force GridLayout to respect the order of column boundaries. |
也可以看看:
void setOrientation (int orientation)
GridLayout使用orientation属性有两个目的:
HORIZONTAL
the horizontal axis is laid out first. 如果您的布局包含 TextView
(或衍生物: Button
, EditText
, CheckBox
,等等),这是在多行模式(默认),它通常最好是离开网格布局的方向为 HORIZONTAL
-因为 TextView
能够取得其高度的一个给定的宽度,但不是相反的方式。
除上述效果外,方向不会影响GridLayout的实际布局操作,因此即使预期布局的高度大大超过宽度,也可以将GridLayout保留为 HORIZONTAL
模式。
此属性的默认值是 HORIZONTAL
。
相关XML属性:
Parameters | |
---|---|
orientation |
int : either HORIZONTAL or VERTICAL |
也可以看看:
void setRowCount (int rowCount)
RowCount仅用于在组件的布局参数未指定它们时生成默认行/列索引。
相关XML属性:
Parameters | |
---|---|
rowCount |
int : the number of rows |
也可以看看:
void setRowOrderPreserved (boolean rowOrderPreserved)
当此属性为 true
,GridLayout被迫放置行边界,以使它们的 true
在视图中以升序排列。
当这个属性是 false
GridLayout可以自由地将垂直行边界以任何最适合给定约束的顺序放置。
此属性的默认值是 true
。
相关XML属性:
Parameters | |
---|---|
rowOrderPreserved |
boolean : true to force GridLayout to respect the order of row boundaries |
也可以看看:
void setUseDefaultMargins (boolean useDefaultMargins)
当true
,GridLayout根据孩子的视觉特性为儿童分配默认边距。 如此定义的每个边距可以通过对相应布局参数的分配而被独立地覆盖。
当 false
,所有边距的默认值为零。
设置为 true
,请考虑将 alignmentMode
属性的值设置为 ALIGN_BOUNDS
。
此属性的默认值为 false
。
相关XML属性:
Parameters | |
---|---|
useDefaultMargins |
boolean : use true to make GridLayout allocate default margins |
GridLayout.Spec spec (int start, float weight)
相当于: spec(start, 1, weight)
。
Parameters | |
---|---|
start |
int : the start |
weight |
float : the weight |
Returns | |
---|---|
GridLayout.Spec |
GridLayout.Spec spec (int start)
返回规格, spec
,其中:
spec.span = [start, start + 1]
要使开始索引未定义,请使用值 UNDEFINED
。
Parameters | |
---|---|
start |
int : the start index |
Returns | |
---|---|
GridLayout.Spec |
也可以看看:
GridLayout.Spec spec (int start, int size, GridLayout.Alignment alignment, float weight)
返回规格, spec
,其中:
spec.span = [start, start + size]
spec.alignment = alignment
spec.weight = weight
要使开始索引未定义,请使用值 UNDEFINED
。
Parameters | |
---|---|
start |
int : the start |
size |
int : the size |
alignment |
GridLayout.Alignment : the alignment |
weight |
float : the weight |
Returns | |
---|---|
GridLayout.Spec |
GridLayout.Spec spec (int start, GridLayout.Alignment alignment, float weight)
相当于: spec(start, 1, alignment, weight)
。
Parameters | |
---|---|
start |
int : the start |
alignment |
GridLayout.Alignment : the alignment |
weight |
float : the weight |
Returns | |
---|---|
GridLayout.Spec |
GridLayout.Spec spec (int start, int size, GridLayout.Alignment alignment)
相当于: spec(start, size, alignment, 0f)
。
Parameters | |
---|---|
start |
int : the start |
size |
int : the size |
alignment |
GridLayout.Alignment : the alignment |
Returns | |
---|---|
GridLayout.Spec |
GridLayout.Spec spec (int start, GridLayout.Alignment alignment)
返回规格, spec
,其中:
spec.span = [start, start + 1]
spec.alignment = alignment
要使开始索引未定义,请使用值 UNDEFINED
。
Parameters | |
---|---|
start |
int : the start index |
alignment |
GridLayout.Alignment : the alignment |
Returns | |
---|---|
GridLayout.Spec |
也可以看看:
GridLayout.Spec spec (int start, int size, float weight)
等同于: spec(start, 1, default_alignment, weight)
-在 default_alignment
在指定 GridLayout.LayoutParams
。
Parameters | |
---|---|
start |
int : the start |
size |
int : the size |
weight |
float : the weight |
Returns | |
---|---|
GridLayout.Spec |
GridLayout.Spec spec (int start, int size)
返回规格, spec
,其中:
spec.span = [start, start + size]
要使开始索引未定义,请使用值 UNDEFINED
。
Parameters | |
---|---|
start |
int : the start |
size |
int : the size |
Returns | |
---|---|
GridLayout.Spec |
也可以看看:
boolean checkLayoutParams (ViewGroup.LayoutParams p)
Parameters | |
---|---|
p |
ViewGroup.LayoutParams
|
Returns | |
---|---|
boolean |
GridLayout.LayoutParams generateDefaultLayoutParams ()
返回一组默认布局参数。 当传递给addView(View)
的视图没有设置布局参数时,请求这些参数。 如果返回null,则会从addView引发异常。
Returns | |
---|---|
GridLayout.LayoutParams |
a set of default layout parameters or null |
GridLayout.LayoutParams generateLayoutParams (ViewGroup.LayoutParams lp)
根据提供的布局参数返回一组安全的布局参数。 当一个ViewGroup被传递一个视图,其布局参数不能通过checkLayoutParams(android.view.ViewGroup.LayoutParams)
的测试时,这个方法被调用。 此方法应该返回一组适合此ViewGroup的布局参数,可能是通过从指定的一组布局参数中复制适当的属性。
Parameters | |
---|---|
lp |
ViewGroup.LayoutParams : The layout parameters to convert into a suitable set of layout parameters for this ViewGroup. |
Returns | |
---|---|
GridLayout.LayoutParams |
an instance of ViewGroup.LayoutParams or one of its descendants |
void onLayout (boolean changed, int left, int top, int right, int bottom)
当这个视图为每个孩子分配一个大小和位置时,从布局调用。 带孩子的派生类应该覆盖这个方法,并调用他们每个孩子的布局。
Parameters | |
---|---|
changed |
boolean : This is a new size or position for this view |
left |
int : Left position, relative to parent |
top |
int : Top position, relative to parent |
right |
int : Right position, relative to parent |
bottom |
int : Bottom position, relative to parent |
void onMeasure (int widthSpec, int heightSpec)
测量视图及其内容以确定测量宽度和测量高度。 此方法由measure(int, int)
调用,并应由子类覆盖以提供其内容的准确和有效的度量。
合同:重写此方法时, 必须调用setMeasuredDimension(int, int)
来存储此视图的测量宽度和高度。 不这样做会触发IllegalStateException
,由measure(int, int)
抛出。 调用超类' onMeasure(int, int)
是一个有效的用法。
Measure的基类实现默认为背景大小,除非MeasureSpec允许更大的大小。 子类应该覆盖onMeasure(int, int)
以提供更好的内容度量。
如果此方法被覆盖,则子类的责任是确保测量的高度和宽度至少为视图的最小高度和宽度( getSuggestedMinimumHeight()
和 getSuggestedMinimumWidth()
)。
Parameters | |
---|---|
widthSpec |
int : horizontal space requirements as imposed by the parent. The requirements are encoded with View.MeasureSpec . |
heightSpec |
int : vertical space requirements as imposed by the parent. The requirements are encoded with View.MeasureSpec . |