Android Monospace字体不是固定宽度

时间:2013-06-11 11:13:28

标签: android view ondraw typeface monospace

我正在为定时器编写自定义视图,但我无法为中间的数字获得正确的固定宽度字体。这是相关代码(来自两种不同的方法):

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占用的空间就会减少,整个文本块会移动一点。这显然不应该发生,因为我使用的是等宽字体。任何人都可以解释我如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。修复它的方法是使用外部字体,其中“1”表现如预期。有这么多字体的网站就是这个:http://www.fontcubes.com/。有关如何在Android中使用外部字体的相关讨论,请访问:How to change fontFamily of TextView in Android