2013-03-25 91 views
3

如何使用Canvas绘制具有指定边界和矩形内部的填充矩形文本Android?我试过使用画布在填充的矩形内绘制文本Android

mPaint.setColor(Color.GREEN); 
canvas.drawText(mText, x, y, mPaint); 
mPaint.setColor(Color.BLACK); 
canvas.drawRect(x, y, x + w, y + h, mPaint); 

但文本不在那个矩形内。任何好友都可以告诉我如何在考虑文字大小的情况下围绕指定文本绘制矩形?

回答

10

在这里我已经硬编码的x和y值。你可以改变他们

 mpaint= new Paint(); 
     mpaint.setColor(Color.RED); 
     mpaint.setStyle(Style.FILL); 
     paint2= new Paint(); 
     paint2.setColor(Color.GREEN); 
     paint2.setTextSize(50); //set text size 
     float w = paint2.measureText(s)/2; 
     float textSize = paint2.getTextSize(); 


     @Override 
     protected void onDraw(Canvas canvas) { 
      paint2.setTextAlign(Paint.Align.CENTER); 
      canvas.drawRect(300-w, 300 - textsize, 300 + w, 300, mpaint); 
      canvas.drawText(s, 300, 300 ,paint2); //x=300,y=300  
     } 

编辑:

它的坏主意,叫measureTextonDraw。您可以在onDraw之外执行此操作。

还有一个关于性能的视频,以及为什么你应该避免拨款onDrawhttps://www.youtube.com/watch?v=HAK5acHQ53E

得到的抽点

enter image description here

+0

对不起忘了提,矩形应只文本区的位置和文字大小可以动态地改变。取决于文本的大小和长度我画矩形? – 2013-03-25 07:39:22

+0

@Kanti1903尝试以上。 – Raghunandan 2013-03-25 07:39:24

+1

@ Kanti1903尝试编辑 – Raghunandan 2013-03-25 08:48:57