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



我想使用以下代码将自定义视图添加到 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); 
    }
}

}

该表仅显示第一行:

|我的自定义视图 |我的自定义视图 |我的自定义视图 |

但是,如果我将我的自定义视图更改为从文本视图继承:

public class MyCustomView extends TextView

该表正确显示所有行:

|我的自定义视图 |我的自定义视图 |我的自定义视图 |

|我的自定义视图 |我的自定义视图 |我的自定义视图 |

|我的自定义视图 |我的自定义视图 |我的自定义视图 |

文本视图有什么,但视图没有,这导致了表格布局的差异?

我应该向我的自定义视图添加一些东西吗?

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

谢谢。

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

这篇文章对此有很好的解释。

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

最新更新