我正在动态地向表中添加带有两列的行。其中一列包含将跨多行展开的文本。我已经添加了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