我想使用以下代码将自定义视图添加到TableLayout中:
我的自定义视图类:
public class MyCustomView extends View{
...
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//draw on canvas
}
}
将视图添加到另一个类的表布局中:
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更改为继承自TextView:
public class MyCustomView extends TextView
该表正确显示所有行:
| MyCustomView | MyCustomView | MyCustomView |
| MyCustomView | MyCustomView | MyCustomView |
| MyCustomView | MyCustomView | MyCustomView |
TextView有什么但View没有,这导致TableLayout出现差异?
我应该在自定义视图中添加一些内容吗?
注意:我试图将布局TableLayout.ParamLayout设置为视图的LayoutParamater,它也不起作用。
谢谢。
最佳答案
我发现如果要对自定义视图的布局参数使用onMeasure()
,则需要在自定义视图中覆盖WRAP_CONTENT
,以便父布局(即TableLayout)可以正确识别自定义视图的高度,然后显示它正确地。
this post 对此有很好的解释。
或者通过使用布局参数而不是使用WRAP_CONTENT
指定自定义视图的高度也可以。
关于android - Android TableLayout包含自定义 View ,仅显示第一行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29859447/