天天看点

Android开发中TableLayout表格布局(二)

三、关于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();

   }

   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)

所谓可收缩的列,是指如果此列的内容宽度超出一定宽度,为了使后面的列内容展示出来,此列宽度会自动收缩,高度会增加,如下图所示:

Android开发中TableLayout表格布局(二)

至于可拉伸的列,是指如果此行内容内有充满整行,此列会进行拉伸自动充满。

       下面这些方法与表格中列的隐藏有关:

//设置某列是否隐藏

public void setColumnCollapsed(int columnIndex, boolean isCollapsed)

//获取某列是否被隐藏

public boolean isColumnCollapsed(int columnIndex)

需要注意,在TableLayout中也定义了一个LayoutParams的内部类,其用于设置其中每一行视图元素的布局,但是开发者只能设置此布局类对应的高度参数,宽度将强制设置为MATCH_PARENT。

继续阅读