如何在Canvas上使用默认的Android字体进行绘制?

dim*_*suz 12 fonts android text canvas

我试图像这样在Canvas上绘制一个文本(下面有点伪代码):

Paint p = new Paint(ANTI_ALIAS_FLAG);
p.setTextSize(18);
...
mCanvas.drawText("Hello StackOverflow!", 50, 50, p);
Run Code Online (Sandbox Code Playgroud)

我的问题是结果看起来真的很"奇怪".它使用了一些粗体字体,这种字体很混乱,看起来不漂亮而且"方形".

我尝试使用p.setTextSize(),通过设置各种大小,我尝试通过使用p.setTypeface(字体)和设置DEFAULT,NORMAL,SERIF,SANS_SERIF等设置不同的默认字体,但它仍然看起来很难看.

相反,系统其余部分使用的字体看起来非常好,我想使用它.

怎么样?:)

Jor*_*oru 16

这将正确地为字体添加别名:

p.setAntiAlias(true);
Run Code Online (Sandbox Code Playgroud)

如果要更改字体本身,请使用

p.setTypeface(yourTypeface);
Run Code Online (Sandbox Code Playgroud)

使用自定义Typeface对象.

(看看http://developer.android.com/reference/android/graphics/Typeface.html)

您可以使用

Typeface.defaultFromStyle(int style);
Run Code Online (Sandbox Code Playgroud)

以及其中一个文本样式:http://developer.android.com/reference/android/R.style.html#TextAppearance.

它应该为您提供默认的系统字体样式,如果这是您所追求的.

  • -1:`Typeface.defaultFromStyle(int style);`希望接收类似`Typeface.BOLD`的样式,而不是`android.R.style`的样式. (4认同)