在画布上绘制多个多行文字视图?

时间:2013-01-15 09:34:46

标签: canvas textview draw multiline

我正在一个Android项目中工作,我想在给定宽度的画布上绘制三个不同的用户输入。三个输入应具有可定制的布局/不同的打印。想想报纸上的文字广告,标题,内容和联系人数据都有不同的文字布局。到目前为止,我使用this解决方案格式化有关换行符等的输入。

现在它看起来像这样:
TextView tv_title = new TextView(this);
tv_title.setText(titleText);
tv_title.setDrawingCacheEnabled(true);
tv_title.setWidth(advert_width);
advert_height = tv_title.getMinimumHeight();

Canvas canvas = new Canvas();
Bitmap b =Bitmap.createBitmap(advert_width,advert_height, Bitmap.Config.ARGB_8888);
canvas.setBitmap(b);
Paint backgroundPaint = new Paint();
backgroundPaint.setColor(Color.WHITE);
canvas.drawPaint(backgroundPaint);

我认为这会将位图精确调整到TextView所需的高度,这样我就可以保存每个“Text-Bitmap”的高度并将它们绘制在另一个画布上。
不幸的是,TextView.getMinHeight()和View.getMinimumHeight()都抛出异常,我猜它们只有在你首先使用Setter时才有效。

有人能想到另一种解决方案如何获得多线Textview的高度吗?

最好的问候,
克里斯

1 个答案:

答案 0 :(得分:0)

我建议你参考我在这里找到的答案并扩展你的特殊需求。 https://stackoverflow.com/a/15092729/1759409

例如,这三种方法首先发送一个设置尺寸的矩形以填充文本。可以通过调用底部的两种方法来计算矩形的初始大小,以创建适合文本的尺寸。在这里评论,我可以进一步扩展。