如何在Android上的画布(Canvas)上绘制文本视图(TextView)?

26

如何在Android中在画布(Canvas)上绘制TextView?

我们有Canvas.DrawBitmap()Canvas.drawText()等方法。但是,是否有一种将TextView作为参数的方法或其他方法可以在画布上显示TextView呢?

实际上,我有一个包含字母的TextView,并且我需要在该字母上进行绘制,这个字母在画布上。

请提供建议... 感谢您的合作。

3个回答

56

你无法直接绘制Textview,但是你可以将其放在布局中并绘制该布局。例如:

LinearLayout layout = new LinearLayout(context);

TextView textView = new TextView(context); 
textView.setVisibility(View.VISIBLE);
textView.setText("Hello world");
layout.addView(textView);

layout.measure(canvas.getWidth(), canvas.getHeight());
layout.layout(0, 0, canvas.getWidth(), canvas.getHeight());

// To place the text view somewhere specific:
//canvas.translate(0, 0);

layout.draw(canvas);

3
在关于measure()调用方面,我使用MeasureSpec.makeMeasureSpec(canvas.getWidth(), MeasureSpec.EXACTLY)而不是canvas.getWidth()(高度也一样),获得了更大的成功。 - Emmanuel Touzery
TextView可以点击吗?我添加了一个onClick监听器,但好像没有起作用。 - silent_dev
3
TextView是否有一个接受画布(Canvas)的绘制方法?它是无效操作吗? - Ian Warburton
我已经在我的XML文件中有一个TextView,我想在它上面应用画布。 - Prince Dholakiya
如何在屏幕中央显示 - mr.hir

3

0
你需要创建一个继承TextView的类。随后覆盖onDraw方法。这个方法可以让你以你喜欢的方式绘制你的TextView。

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