Как рисовать шрифтом Android по умолчанию на холсте?

Я пытаюсь нарисовать текст на 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 и т. д., но это все еще выглядит уродливо.

Наоборот, шрифт, используемый во всей остальной системе, выглядит очень красиво, и я хотел бы его использовать.

Как? :)


person dimsuz    schedule 02.11.2010    source источник
comment
Было бы полезно, если бы вы добавили скриншот, чтобы увидеть, в чем проблема на самом деле.   -  person blessenm    schedule 23.08.2011


Ответы (1)


Это будет правильным псевдонимом шрифта:

p.setAntiAlias(true);

Если вы хотите изменить сам шрифт, используйте

p.setTypeface(yourTypeface);

с пользовательским объектом Typeface.

(взгляните на http://developer.android.com/reference/android/graphics/Typeface.html)

Ты можешь использовать

Typeface.defaultFromStyle(int style);

вместе с одним из стилей текста здесь: http://developer.android.com/reference/android/R.style.html#TextAppearance.

Это должно дать вам стиль системного шрифта по умолчанию, если это то, что вам нужно.

person Joru    schedule 24.08.2011
comment
-1: Typeface.defaultFromStyle(int style); ожидает получить стили, подобные Typeface.BOLD, а не стили от android.R.style. - person Malcolm; 03.10.2013
comment
Действительно важная деталь. Использование значения из android.R.style приводит к ArrayIndexOutOfBoundsException. - person Mavamaarten; 22.12.2016