Нарисуйте текст внутри заполненного прямоугольника с помощью Canvas Android

Как нарисовать заполненный прямоугольник с указанными границами и внутри этого текста прямоугольника, который будет рисоваться с помощью Canvas Android? Я пытался

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

Но текст не находится внутри этого прямоугольника. Может ли кто-нибудь приятель сказать мне, как нарисовать прямоугольник, окружающий указанный текст, с учетом размера текста?

Здесь у меня есть жестко заданные значения 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 } 

Редактировать :

Его плохая идея назвать measureText в onDraw . Вы можете сделать это за пределами onDraw .

Также есть видео о производительности и почему вы должны избегать выделения в onDraw . https://www.youtube.com/watch?v=HAK5acHQ53E

Результирующий щелчок

Введите описание изображения здесь