26

How to Draw TextView on Canvas in android..?

We have Canvas.DrawBitmap(), Canvas.drawText(). Do we have any Method in Canvas which takes TextView as a parameter or any other method to display TextView on Canvas?

Actually, I have a alphabet in TextView and I have to make drawing on that alphabet which is in canvas.

Please suggest anything....Thanks for your cooperation

Yury
  • 20,618
  • 7
  • 58
  • 86
Rajesh
  • 261
  • 1
  • 4
  • 5

3 Answers3

56

You can't draw a Textview directly, but you can put it in a layout and draw the layout. Something like this:

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);
emidander
  • 2,383
  • 22
  • 29
3

May be you need to use StaticLayout. It can draw formatted text, manages word wrapping and so on. Have a look at http://developer.android.com/reference/android/text/StaticLayout.html

Ilya Izhovkin
  • 3,455
  • 4
  • 22
  • 25
0

You need to create a class which will extend Textview. After that override onDraw method. This method provides you to draw your textview tha way you like it

Ravi Bhojani
  • 1,032
  • 1
  • 13
  • 24