Android中如何根据给定的文本对可绘制矩形坐标进行对齐?

3

我想在给定的文本上绘制一个透明的矩形,效果如下图所示: enter image description here

我使用以下代码来绘制透明矩形,但无法理解坐标位置。我尝试了很多次,但它不起作用。

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方法中其余坐标的值与textcoordinates对齐,应该如何设置?目前我正在使用以下设置:

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

我可以在屏幕上看到矩形,但无法将其设置在正确的位置。我已经尝试了将近一个小时:( - Amit Pal
@Tasos,你能看一下Edit-1部分吗? - Amit Pal
以下是一些帮助理解位置如何工作的内容 -- https://dev59.com/SWIk5IYBdhLWcg3wPL7R - Tasos
顺便说一句,canvas.drawRect(0, 350, 140, 420, rectPaint); 对我来说可行。我会加上更好的理解来回答。 - Amit Pal
是的,但在我的情况下不可能,因为我正在使用Picasso转换来添加新图像。 - Amit Pal
显示剩余3条评论
1个回答

0
你可以使用 Paint.getTextBounds() 方法来实现。

getTextBounds(String text, int start, int end, Rect bounds)

返回一个由调用者分配的矩形,该矩形包含所有字符,隐含原点为 (0,0)。

这将给你想要的 Rect,然后你需要使用 drawText 调用提供的坐标来偏移这个 Rect

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接