安卓:Tablerow多行文本视图垂直剪裁

4

我正在向表格动态添加带有两列的行。其中一列包含会跨越多行的文本。我已经在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);

我该如何解决这个垂直剪切问题?以下是问题的截图:

这里是显示问题的链接


TableRow.LayoutParams paramsText = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT); 表行布局参数paramsText = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT); - Pratik Bhat
2个回答

1
我已经找到了问题的根源。第一列的文本大小(textsize)导致多行文本被裁剪。如果我减小文本大小,问题就消失了。虽然我无法解释为什么会这样。

0
另一个答案是:Android以非常不直观的方式测量表行高度。如果您有两个TextView,每个TableRow的一列,您需要确保第一个TextView设置的任何顶部和底部填充都与第二个TextView相同,否则您将获得奇怪的事情,例如内容剪切和第二个TextView的奇怪定位。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接