【问题标题】:How to draw with a default Android font on a Canvas?如何在 Canvas 上使用默认的 Android 字体进行绘制?
【发布时间】:2011-05-03 19:53:05
【问题描述】:

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

Paint p = new Paint(ANTI_ALIAS_FLAG);
p.setTextSize(18);
...
mCanvas.drawText("Hello StackOverflow!", 50, 50, p);

我的问题是结果看起来真的很“奇怪”。它使用了一些类似粗体的字体,这种字体的别名很严重,看起来不漂亮而且“方形”。

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

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

怎么样? :)

【问题讨论】:

  • 如果您添加屏幕截图以查看问题的真正原因,将会很有帮助。

标签: android text fonts canvas


【解决方案1】:

这将正确地为字体起别名:

p.setAntiAlias(true);

如果你想改变字体本身,那么使用

p.setTypeface(yourTypeface);

使用自定义字体对象。

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

你可以使用

Typeface.defaultFromStyle(int style);

连同此处的文本样式之一:http://developer.android.com/reference/android/R.style.html#TextAppearance

它应该给你默认的系统字体样式,如果那是你所追求的。

【讨论】:

  • -1: Typeface.defaultFromStyle(int style); 期望接收类似Typeface.BOLD 的样式,而不是来自android.R.style 的样式。
  • 确实是重要的细节。使用来自 android.R.style 的值会产生 ArrayIndexOutOfBoundsException
猜你喜欢
  • 1970-01-01
  • 2017-05-21
  • 1970-01-01
  • 2020-02-27
  • 1970-01-01
  • 1970-01-01
  • 2011-03-13
  • 2012-01-02
相关资源
最近更新 更多