我正在为定时器编写自定义视图,但我无法为中间的数字获得正确的固定宽度字体。这是相关代码(来自两种不同的方法):
mTextPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG);
mTextPaint.setTypeface(Typeface.create(Typeface.MONOSPACE, Typeface.NORMAL));
// Get rectangle that is the size of the text
mTextPaint.getTextBounds(
getTimeText(),
0,
getTimeText().length(),
mTextBounds);
// X and Y coordinates of text
float mTextPosX = (width / 2) - (mTextBounds.width() / 2);
float mTextPosY = (height / 2) + (mTextBounds.height() / 2);
// Draw text
canvas.drawText(
getTimeText(),
mTextPosX,
mTextPosY,
mTextPaint);
这似乎工作正常,但只要其中一个数字变为1,那1占用的空间就会减少,整个文本块会移动一点。这显然不应该发生,因为我使用的是等宽字体。任何人都可以解释我如何解决这个问题吗?
答案 0 :(得分:0)
我遇到了同样的问题。修复它的方法是使用外部字体,其中“1”表现如预期。有这么多字体的网站就是这个:http://www.fontcubes.com/。有关如何在Android中使用外部字体的相关讨论,请访问:How to change fontFamily of TextView in Android。