三、关于TableLayout
在向TableLayout容器中添加或者移除视图的时候,开发者可以对其进行监听,示例如下:
TableLayout tableLayout = new TableLayout(this);
tableLayout.setOnHierarchyChangeListener(new ViewGroup.OnHierarchyChangeListener() {
@Override
public void onChildViewAdded(View parent, View child) {
Toast.makeText(getBaseContext(),"add",Toast.LENGTH_SHORT).show();
}
@Override
public void onChildViewRemoved(View parent, View child) {
Toast.makeText(getBaseContext(),"remove",Toast.LENGTH_SHORT).show();
}
});
开发者还可以对表格中视图元素的一些尺寸自适应做一些设置,其中还有一些常用的方法列举如下:
//获取表格中所有列是否是可收缩的
public boolean isShrinkAllColumns()
//设置表格中的所有列是否可收缩
public void setShrinkAllColumns()
//获取表格中的所有列是否可拉伸
public boolean isStretchAllColumns()
//设置表格中的所有列是否可拉伸
public void setStretchAllColumns()
//设置某一列是否可拉伸
public void setColumnStretchable(int columnIndex, boolean isStretchable)
//获取某一列是否可拉伸
public boolean isColumnStretchable(int columnIndex)
//设置某一列是否可收缩
public void setColumnShrinkable(int columnIndex, boolean isShrinkable)
//获取某一列是否可收缩
public boolean isColumnShrinkable(int columnIndex)
所谓可收缩的列,是指如果此列的内容宽度超出一定宽度,为了使后面的列内容展示出来,此列宽度会自动收缩,高度会增加,如下图所示:
至于可拉伸的列,是指如果此行内容内有充满整行,此列会进行拉伸自动充满。
下面这些方法与表格中列的隐藏有关:
//设置某列是否隐藏
public void setColumnCollapsed(int columnIndex, boolean isCollapsed)
//获取某列是否被隐藏
public boolean isColumnCollapsed(int columnIndex)
需要注意,在TableLayout中也定义了一个LayoutParams的内部类,其用于设置其中每一行视图元素的布局,但是开发者只能设置此布局类对应的高度参数,宽度将强制设置为MATCH_PARENT。