如何在Android中的Canvas上绘制TextView?

Raj*_*esh 22 android

如何在Android中的Canvas上绘制TextView?

我们有Canvas.DrawBitmap(),Canvas.drawText().我们在Canvas中有任何Method,它将TextView作为参数或任何其他方法在Canvas上显示TextView吗?

实际上,我在TextView中有一个字母表,我必须在画布上绘制该字母表.

请提出建议....感谢您的合作

emi*_*der 50

您无法直接绘制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);
Run Code Online (Sandbox Code Playgroud)

  • 关于measure()调用,我使用MeasureSpec.makeMeasureSpec(canvas.getWidth(),MeasureSpec.EXACTLY)而不是canvas.getWidth()(和高度相同)更成功. (3认同)
  • TextView是否有一个绘制画布的绘图方法?这是无操作吗? (2认同)

Ily*_*kin 3

可能您需要使用StaticLayout. 它可以绘制格式化文本、管理自动换行等。看看http://developer.android.com/reference/android/text/StaticLayout.html