Android Canvas Paint:getTextBounds()忽略系统字体

时间:2020-07-02 00:38:40

标签: java android kotlin fonts paint

paint.getTextBounds(text, 0, text.length, textBounds)
...
canvas.drawText(text, canvas.width/2F - textBounds.exactCenterX(), canvas.height/2F - textBounds.exactCenterY(), paint)

我正在使用getTextBounds()将文本置于圆形图形的中心。虽然使用系统的默认字体(左截屏)看起来不错,但是当我更改系统字体(右截屏)时,文本滑动到圆圈中心的左侧:

enter image description here enter image description here

103234对我来说尤其糟糕。我选择的字体是Samsung Galaxy S7上的Choco Cooky

我在标题行的代码后面放了一个调试打印,发现无论选择哪种字体,它都返回相同的边界,因为Choco Cooky的字母较小,这可以解释结果。但是,这种行为对我来说似乎是个错误。


我该怎么做才能准确测量出尊重系统字体的文本范围?

1 个答案:

答案 0 :(得分:0)

一种方法可能是使用以TextView为背景的ShapeDrawable作为背景,然后获取converted into a Bitmap,以便可以将其用作Google Maps标记。但是,这听起来像是很多重写,但没有任何保证可以解决该问题。