我想使用以下代码将自定义视图添加到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,它也不起作用。
感谢。
答案 0 :(得分:1)
如果我想将onMeasure()
用于自定义视图的布局参数,我发现我需要在自定义视图中覆盖WRAP_CONTENT
,以便父布局(TableLayout)可以正确识别高度自定义视图,然后正确显示。
this post 对此有很好的解释。
或者使用布局参数指定自定义视图的高度,而不是使用WRAP_CONTENT
。