Most visited

Recently visited

Added in API level 1

TableLayout

public class TableLayout
extends LinearLayout

java.lang.Object
   ↳ android.view.View
     ↳ android.view.ViewGroup
       ↳ android.widget.LinearLayout
         ↳ android.widget.TableLayout


将其子项排列成行和列的布局。 TableLayout由多个TableRow对象组成,每个对象都定义一行(实际上,您可以拥有其他子项,这将在下面进行解释)。 TableLayout容器不显示其行,列或单元格的边框线。 每行有零个或多个单元格; 每个单元格可以容纳一个View对象。 该表具有与最多单元格一样多的列。 表格可以让单元格为空。 单元格可以跨越列,就像在HTML中一样。

列的宽度由该列中具有最宽单元格的行定义。 但是,TableLayout可以通过调用setColumnShrinkable()setColumnStretchable()将某些列指定为可收缩或可拉伸。 如果标记为可收缩,则可以收缩列宽以使表适合其父对象。 如果标记为可拉伸,则可以在宽度上扩展以适应任何额外的空间。 表的总宽度由其父容器定义。 重要的是要记住,一列可以缩小和拉伸。 在这种情况下,该列将更改其大小以始终用尽可用空间,但从未更多。 最后,你可以通过调用setColumnCollapsed()来隐藏一列。

TableLayout的子项不能指定layout_width属性。 宽度始终为MATCH_PARENT 但是, layout_height属性可以由小孩定义; 默认值是WRAP_CONTENT 如果孩子是TableRow ,那么身高总是WRAP_CONTENT

单元格必须以增加的列顺序添加到行中,无论是在代码和XML中。 列号是从零开始的。 如果您未指定子单元格的列号,则会自动增加到下一个可用列。 如果您跳过列号,它将被视为该行中的空单元格。 有关使用XML创建表的示例,请参阅ApiDemos中的TableLayout示例。

虽然TableLayout的典型子元素是TableRow,但实际上可以将任何View子类用作TableLayout的直接子元素。 该视图将显示为跨越所有表格列的单个行。

Summary

Nested classes

class TableLayout.LayoutParams

这组布局参数强制每个孩子的宽度为MATCH_PARENT ,每个孩子的高度为WRAP_CONTENT ,但只限于未指定高度。

XML attributes

android:collapseColumns The zero-based index of the columns to collapse. 
android:shrinkColumns The zero-based index of the columns to shrink. 
android:stretchColumns The zero-based index of the columns to stretch. 

Inherited XML attributes

From class android.widget.LinearLayout
From class android.view.ViewGroup
From class android.view.View

Inherited constants

From class android.widget.LinearLayout
From class android.view.ViewGroup
From class android.view.View

Inherited fields

From class android.view.View

Public constructors

TableLayout(Context context)

为给定的上下文创建一个新的TableLayout。

TableLayout(Context context, AttributeSet attrs)

为给定的上下文和指定的set属性创建一个新的TableLayout。

Public methods

void addView(View child, int index)

添加子视图。

void addView(View child, ViewGroup.LayoutParams params)

添加具有指定布局参数的子视图。

void addView(View child)

添加子视图。

void addView(View child, int index, ViewGroup.LayoutParams params)

添加具有指定布局参数的子视图。

TableLayout.LayoutParams generateLayoutParams(AttributeSet attrs)

根据提供的属性集返回一组新的布局参数。

CharSequence getAccessibilityClassName()

返回此对象的类名称以用于辅助功能。

boolean isColumnCollapsed(int columnIndex)

返回指定列的折叠状态。

boolean isColumnShrinkable(int columnIndex)

返回指定的列是否可缩小。

boolean isColumnStretchable(int columnIndex)

返回指定的列是否可伸缩。

boolean isShrinkAllColumns()

指示是否所有列都可收缩。

boolean isStretchAllColumns()

指示所有列是否可伸缩。

void requestLayout()

当事情发生变化时调用它,这已经使这个视图的布局无效。

void setColumnCollapsed(int columnIndex, boolean isCollapsed)

折叠或恢复给定的列。

void setColumnShrinkable(int columnIndex, boolean isShrinkable)

使给定列可缩小或不缩小。

void setColumnStretchable(int columnIndex, boolean isStretchable)

使给定的列可拉伸或不拉伸。

void setOnHierarchyChangeListener(ViewGroup.OnHierarchyChangeListener listener)

当一个孩子被添加到这个视图或从这个视图中删除时注册一个回调被调用。

void setShrinkAllColumns(boolean shrinkAllColumns)

将所有栏标记为可收缩的便捷方法。

void setStretchAllColumns(boolean stretchAllColumns)

便捷方法将所有列标记为可伸缩。

Protected methods

boolean checkLayoutParams(ViewGroup.LayoutParams p)

LinearLayout.LayoutParams generateDefaultLayoutParams()

返回一组宽度为 MATCH_PARENT ,高度为 WRAP_CONTENT的布局参数。

LinearLayout.LayoutParams generateLayoutParams(ViewGroup.LayoutParams p)

根据提供的布局参数返回一组安全的布局参数。

void onLayout(boolean changed, int l, int t, int r, int b)

当这个视图为每个孩子分配一个大小和位置时,从布局调用。

void onMeasure(int widthMeasureSpec, int heightMeasureSpec)

测量视图及其内容以确定测量宽度和测量高度。

Inherited methods

From class android.widget.LinearLayout
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

XML attributes

android:collapseColumns

要折叠的列的从零开始的索引。 列索引必须用逗号分隔:1,2,5。忽略非法和重复的索引。

必须是字符串值,使用'\\;' 转义字符如'\\ n'或'\\ uxxxx'作为unicode字符。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 collapseColumns

相关方法:

android:shrinkColumns

要缩小的列的从零开始的索引。 列索引必须用逗号分隔:1,2,5。忽略非法和重复的索引。 您可以通过使用值“*”来缩小所有列。 请注意,一列可以同时标记为可拉伸和收缩。

必须是字符串值,使用'\\;' 转义字符如'\\ n'或'\\ uxxxx'作为unicode字符。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 shrinkColumns

相关方法:

android:stretchColumns

要扩展的列的从零开始的索引。 列索引必须用逗号分隔:1,2,5。忽略非法和重复的索引。 您可以使用值“*”来代替伸展所有列。 请注意,一列可以同时标记为可拉伸和收缩。

必须是字符串值,使用'\\;' 转义字符如'\\ n'或'\\ uxxxx'作为unicode字符。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 stretchColumns

相关方法:

Public constructors

TableLayout

Added in API level 1
TableLayout (Context context)

为给定的上下文创建一个新的TableLayout。

Parameters
context Context: the application environment

TableLayout

Added in API level 1
TableLayout (Context context, 
                AttributeSet attrs)

为给定的上下文和指定的set属性创建一个新的TableLayout。

Parameters
context Context: the application environment
attrs AttributeSet: a collection of attributes

Public methods

addView

Added in API level 1
void addView (View child, 
                int index)

添加子视图。 如果没有设置布局参数,则此子视图的默认参数设置在该子级上。

注意:不要调用此方法 draw(android.graphics.Canvas)onDraw(android.graphics.Canvas)dispatchDraw(android.graphics.Canvas)或任何相关方法。

Parameters
child View: the child view to add
index int: the position at which to add the child

addView

Added in API level 1
void addView (View child, 
                ViewGroup.LayoutParams params)

添加具有指定布局参数的子视图。

注意:不要调用此方法 draw(android.graphics.Canvas)onDraw(android.graphics.Canvas)dispatchDraw(android.graphics.Canvas)或任何相关方法。

Parameters
child View: the child view to add
params ViewGroup.LayoutParams: the layout parameters to set on the child

addView

Added in API level 1
void addView (View child)

添加子视图。 如果没有设置布局参数,则此子视图的默认参数设置在该子级上。

注意:不要调用此方法 draw(android.graphics.Canvas)onDraw(android.graphics.Canvas)dispatchDraw(android.graphics.Canvas)或任何相关方法。

Parameters
child View: the child view to add

addView

Added in API level 1
void addView (View child, 
                int index, 
                ViewGroup.LayoutParams params)

添加具有指定布局参数的子视图。

注意:不要调用此方法 draw(android.graphics.Canvas)onDraw(android.graphics.Canvas)dispatchDraw(android.graphics.Canvas)或任何相关方法。

Parameters
child View: the child view to add
index int: the position at which to add the child or -1 to add last
params ViewGroup.LayoutParams: the layout parameters to set on the child

generateLayoutParams

Added in API level 1
TableLayout.LayoutParams generateLayoutParams (AttributeSet attrs)

根据提供的属性集返回一组新的布局参数。

Parameters
attrs AttributeSet: the attributes to build the layout parameters from
Returns
TableLayout.LayoutParams an instance of ViewGroup.LayoutParams or one of its descendants

getAccessibilityClassName

Added in API level 23
CharSequence getAccessibilityClassName ()

返回此对象的类名称以用于辅助功能。 如果子类正在实现的东西应该被视为一个全新的视图类,当它被可访问性使用时,子类只应该覆盖这个子类,与它所源自的类无关。 这是用来填写AccessibilityNodeInfo.setClassName

Returns
CharSequence

isColumnCollapsed

Added in API level 1
boolean isColumnCollapsed (int columnIndex)

返回指定列的折叠状态。

Parameters
columnIndex int: the index of the column
Returns
boolean true if the column is collapsed, false otherwise

isColumnShrinkable

Added in API level 1
boolean isColumnShrinkable (int columnIndex)

返回指定的列是否可缩小。

Parameters
columnIndex int: the index of the column
Returns
boolean true if the column is shrinkable, false otherwise. Default is false.

isColumnStretchable

Added in API level 1
boolean isColumnStretchable (int columnIndex)

返回指定的列是否可伸缩。

Parameters
columnIndex int: the index of the column
Returns
boolean true if the column is stretchable, false otherwise

isShrinkAllColumns

Added in API level 1
boolean isShrinkAllColumns ()

指示是否所有列都可收缩。

相关XML属性:

Returns
boolean true if all columns are shrinkable, false otherwise

isStretchAllColumns

Added in API level 1
boolean isStretchAllColumns ()

指示所有列是否可伸缩。

相关XML属性:

Returns
boolean true if all columns are stretchable, false otherwise

requestLayout

Added in API level 1
void requestLayout ()

当事情发生变化时调用它,这已经使这个视图的布局无效。 这将安排视图树的布局传递。 当视图层次结构当前处于布局传递中时( isInLayout()不应该调用此视图层次结构(如果发生布局,则可以在当前布局传递结束时(然后布局将再次运行)或当前帧结束后绘制并发生下一个布局。

覆盖此方法的子类应调用超类方法以正确处理可能的布局错误请求。

setColumnCollapsed

Added in API level 1
void setColumnCollapsed (int columnIndex, 
                boolean isCollapsed)

折叠或恢复给定的列。 折叠时,屏幕上不显示列,其他列将回收额外的空间。 只有属于TableRow列才会折叠/恢复。

调用此方法将请求布局操作。

相关XML属性:

Parameters
columnIndex int: the index of the column
isCollapsed boolean: true if the column must be collapsed, false otherwise

setColumnShrinkable

Added in API level 1
void setColumnShrinkable (int columnIndex, 
                boolean isShrinkable)

使给定列可缩小或不缩小。 当一行太宽时,表格可以从可收缩的列中回收额外的空间。

调用此方法将请求布局操作。

相关XML属性:

Parameters
columnIndex int: the index of the column
isShrinkable boolean: true if the column must be shrinkable, false otherwise. Default is false.

setColumnStretchable

Added in API level 1
void setColumnStretchable (int columnIndex, 
                boolean isStretchable)

使给定的列可拉伸或不拉伸。 可伸缩时,列在其行中尽可能多地占用可用空间。

调用此方法将请求布局操作。

相关XML属性:

Parameters
columnIndex int: the index of the column
isStretchable boolean: true if the column must be stretchable, false otherwise. Default is false.

setOnHierarchyChangeListener

Added in API level 1
void setOnHierarchyChangeListener (ViewGroup.OnHierarchyChangeListener listener)

当一个孩子被添加到这个视图或从这个视图中删除时注册一个回调被调用。

Parameters
listener ViewGroup.OnHierarchyChangeListener: the callback to invoke on hierarchy change

setShrinkAllColumns

Added in API level 1
void setShrinkAllColumns (boolean shrinkAllColumns)

将所有栏标记为可收缩的便捷方法。

相关XML属性:

Parameters
shrinkAllColumns boolean: true to mark all columns shrinkable

setStretchAllColumns

Added in API level 1
void setStretchAllColumns (boolean stretchAllColumns)

便捷方法将所有列标记为可伸缩。

相关XML属性:

Parameters
stretchAllColumns boolean: true to mark all columns stretchable

Protected methods

checkLayoutParams

Added in API level 1
boolean checkLayoutParams (ViewGroup.LayoutParams p)

Parameters
p ViewGroup.LayoutParams
Returns
boolean

generateDefaultLayoutParams

Added in API level 1
LinearLayout.LayoutParams generateDefaultLayoutParams ()

返回一组宽度为 MATCH_PARENT ,高度为 WRAP_CONTENT的布局参数。

Returns
LinearLayout.LayoutParams a set of default layout parameters or null

generateLayoutParams

Added in API level 1
LinearLayout.LayoutParams generateLayoutParams (ViewGroup.LayoutParams p)

根据提供的布局参数返回一组安全的布局参数。 当一个ViewGroup被传递了一个View,其布局参数没有通过checkLayoutParams(android.view.ViewGroup.LayoutParams)的测试时,这个方法被调用。 此方法应该返回一组适合此ViewGroup的布局参数,可能是通过从指定的一组布局参数中复制适当的属性。

Parameters
p ViewGroup.LayoutParams: The layout parameters to convert into a suitable set of layout parameters for this ViewGroup.
Returns
LinearLayout.LayoutParams an instance of ViewGroup.LayoutParams or one of its descendants

onLayout

Added in API level 1
void onLayout (boolean changed, 
                int l, 
                int t, 
                int r, 
                int b)

当这个视图为每个孩子分配一个大小和位置时,从布局调用。 带孩子的派生类应该覆盖这个方法,并调用他们每个孩子的布局。

Parameters
changed boolean: This is a new size or position for this view
l int: Left position, relative to parent
t int: Top position, relative to parent
r int: Right position, relative to parent
b int: Bottom position, relative to parent

onMeasure

Added in API level 1
void onMeasure (int widthMeasureSpec, 
                int heightMeasureSpec)

测量视图及其内容以确定测量宽度和测量高度。 此方法由measure(int, int)调用, measure(int, int)子类覆盖以提供其内容的准确和有效的度量。

合同:覆盖此方法时, 必须调用setMeasuredDimension(int, int)来存储此视图的测量宽度和高度。 不这样做会触发IllegalStateException ,由measure(int, int)引发。 调用超类' onMeasure(int, int)是一种有效的用法。

Measure的基类实现默认为背景大小,除非MeasureSpec允许更大的大小。 子类应该覆盖onMeasure(int, int)以提供更好的内容度量。

如果此方法被覆盖,则子类的责任是确保测量的高度和宽度至少为视图的最小高度和宽度( getSuggestedMinimumHeight()getSuggestedMinimumWidth() )。

Parameters
widthMeasureSpec int: horizontal space requirements as imposed by the parent. The requirements are encoded with View.MeasureSpec.
heightMeasureSpec int: vertical space requirements as imposed by the parent. The requirements are encoded with View.MeasureSpec.

Hooray!