1

タイマー用のカスタム ビューを作成していますが、中央の数字に適切な固定幅フォントを取得できません。関連するコードは次のとおりです(2つの異なる方法から):

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 が占有するスペースが少なくなり、テキストのチャンク全体が少し移動します。私は等幅フォントを使用しているため、これは明らかに発生すべきではありません。これを修正する方法について誰かが光を当てることができますか?

4

1 に答える 1

1

私も同じ問題を抱えていました。これを修正する方法は、「1」が期待どおりに動作する外部フォントを使用することです。試すフォントがたくさんある Web サイトは、http ://www.fontcubes.com/ です。Android で外部フォントを使用する方法に関する関連する議論は次のとおりです: How to change fontFamily of TextView in Android

于 2016-12-20T01:23:11.233 に答える