Android: Tablerow多行textview垂直剪裁



我正在动态地向表中添加带有两列的行。其中一列包含将跨多行展开的文本。我已经添加了textview的布局参数的重量,所以它不再剪辑屏幕外,但它似乎被限制到两个半行显示在表中,不管多行文本有多长。表只是用xml定义的,其他一切都是通过编程完成的。

    TableRow.LayoutParams rowParams = new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT);
    TableRow.LayoutParams paramsStar = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT);
    paramsStar.setMargins(0,0,40,0);
    TableRow.LayoutParams paramsText = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.FILL_PARENT, (float)1.0);
    TableRow tr = new TableRow(this);
    tr.setLayoutParams(rowParams);
    TextView viewStar = new TextView(this);
    viewStar.setTextSize((float) 30.0);
    viewStar.setText("*");
    viewStar.setLayoutParams(paramsStar);
    viewStar.setTypeface(Typeface.DEFAULT_BOLD, 2);
    TextView viewText = new TextView(this);
    viewText.setText("Long multiline text piece"); //<--- Here the long text goes
    viewText.setLayoutParams(paramsText);
    tr.addView(viewStar);
    tr.addView(viewText);
    table.addView(tr, rowParams);

如何修复这个垂直剪辑?问题截图如下:

这是显示问题的链接

我已经找到问题的根源了。第一列值textsize生成多行文本剪辑。如果我减小文本大小,问题就消失了。我无法解释为什么。

另一个答案是:Android以一种非常不直观的方式测量表行高。如果你有2个TextView(s),一个为TableRow的每列,你需要确保无论顶部和底部填充你已经为第一个TextView设置相同的设置为第二个TextView或你会得到奇怪的东西,如内容剪切和奇怪的定位第二个TextView

最新更新