Android TableLayout包含自定义视图仅显示第一行

时间:2015-04-25 00:03:53

标签: android android-custom-view android-tablelayout

我想使用以下代码将自定义视图添加到TableLayout:

我的自定义视图类:

LoadLibrary

在另一个类中添加了对表布局的视图:

public class MyCustomView extends View{
...
@Override
protected void onDraw(Canvas canvas) {
       super.onDraw(canvas);
      //draw on canvas      
   }
}

}

该表仅显示第一行:

| MyCustomView | MyCustomView | MyCustomView |

但是,如果我将MyCustomView更改为从TextView继承:

public class MyTableView extends TableLayout{
....
private void AddViews(int column,int row){
    for (int i = 0; i < row; i++) {
        TableRow tableRows = new TableRow(mContext);
        for (int j = 0; j < column; j++) {
            MyCustomView myView= new MyCustomView();
            tableRows.addView(dayView);
        }
        addView(tableRows); 
    }

}

该表正确显示所有行:

| MyCustomView | MyCustomView | MyCustomView |

| MyCustomView | MyCustomView | MyCustomView |

| MyCustomView | MyCustomView | MyCustomView |

TextView有什么,但View不会导致TableLayout的差异?

我应该在自定义视图中添加内容吗?

注意:我尝试将布局TableLayout.ParamLayout设置为视图的LayoutParamater,它也不起作用。

感谢。

1 个答案:

答案 0 :(得分:1)

如果我想将onMeasure()用于自定义视图的布局参数,我发现我需要在自定义视图中覆盖WRAP_CONTENT,以便父布局(TableLayout)可以正确识别高度自定义视图,然后正确显示。

this post 对此有很好的解释。

或者使用布局参数指定自定义视图的高度,而不是使用WRAP_CONTENT