1

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

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

4

1 回答 1

1

我有同样的问题。一种解决方法是使用外部字体,其中“1”的行为符合预期。一个可以尝试多种字体的网站是这个:http ://www.fontcubes.com/ 。关于如何在 Android 中使用外部字体的相关讨论在这里:How to change fontFamily of TextView in Android

于 2016-12-20T01:23:11.233 回答