Не удается выровнять координаты прямоугольника с возможностью рисования в соответствии с заданным текстом в Android?

Я хочу нарисовать прямоугольник в виде прозрачного холста на заданном мне text следующим образом: введите описание изображения здесь

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

canvas.drawRect(left,top,right,bottom,paint);

Вот мой код:

Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setColor(Color.WHITE);
paint.setStyle(Paint.Style.FILL);
paint.setTextSize(40);
paint.setShadowLayer(2.0f, 1.0f, 1.0f, Color.BLACK);
paint.setAlpha(255);
rectPaint.setAlpha(100);
canvas.drawText("$250", 20, 400, paint);
canvas.drawBitmap(bitmapImage, 490, 55, null);
canvas.drawRect(0, 100, 300, 400, rectPaint);

Каким будет значение остальных координат в методе drawRect, чтобы выровнять его как заданное coordinates из text. Прямо сейчас я использую

canvas.drawRect(0, ? , ? , ?, rectPaint);   

person Amit Pal    schedule 21.09.2015    source источник
comment
drawRect(float left, float top, float right, float bottom, Paint paint) -- лучше всего сделать прямоугольник непрозрачным, чтобы, по крайней мере, вы могли видеть его на экране и поэкспериментировать с положением, чтобы лучше понять его.   -  person Tasos    schedule 21.09.2015
comment
Я вижу прямоугольник на своем экране, но не могу установить его в правильное положение. Я уже наигрался с ним почти час :(   -  person Amit Pal    schedule 21.09.2015
comment
@Tasos, не могли бы вы посмотреть раздел Eidt-1?   -  person Amit Pal    schedule 21.09.2015
comment
вот некоторая помощь, чтобы понять, как работает позиция - stackoverflow.com/questions/19464962/   -  person Tasos    schedule 21.09.2015
comment
На самом деле я следовал за ним, но местоположение не меняется в соответствии с предложением. Я не знаю почему. Кстати, я проверил ваши координаты и получил следующее: i.imgur.com/Uwhbb2U.png   -  person Amit Pal    schedule 21.09.2015
comment
Кстати, canvas.drawRect(0, 350, 140, 420, rectPaint); работает на меня. Я добавлю свой ответ с лучшим пониманием.   -  person Amit Pal    schedule 21.09.2015
comment
Положение холста также действует как размер по звукам. вы также можете сделать фигуру прямоугольника с возможностью рисования - stackoverflow.com/questions/10124919/   -  person Tasos    schedule 21.09.2015
comment
Да, но в моей ситуации это было невозможно, потому что я использую преобразование Пикассо для добавления нового изображения.   -  person Amit Pal    schedule 21.09.2015


Ответы (1)


Для этого вы можете использовать метод Paint.getTextBounds().

getTextBounds (текст строки, начало int, конец int, границы Rect)

Возвращает в границах (выделенных вызывающей стороной) наименьший прямоугольник, который заключает в себе все символы, с подразумеваемым началом в (0,0).

Это даст вам Rect, который вы хотите, затем вам нужно сместить это Rect с координатами, которые вы указали при вызове drawText.

person Henry    schedule 11.11.2015