Пользовательский текстовый вид с использованием пользовательского шрифта - PullRequest
1 голос
/ 21 января 2011

Я пытаюсь реализовать пользовательское текстовое представление, использующее мой собственный шрифт.

есть ли способ установить гарнитуру перед выполнением Super.onDraw ()?

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

Что-то вроде:

protected void onDraw(Canvas canvas)
{
    Typeface font1 = Typeface.createFromAsset(context.getAssets(), "fonts/myfonts.ttf");
    this.setTypeface(font1);
    this.setTextSize(18);
    super.onDraw(canvas);
}

Я знаю, что приведенный выше код не будет работать.

Илиу меня нет выбора, кроме как использовать drawText () для этого?

Ответы [ 3 ]

9 голосов
/ 07 марта 2011

Это очень плохая практика - создавать новый объект Typeface каждый раз, когда вызывается ваш метод onDraw.Такие вещи, как установка шрифта, должны выполняться в конструкторе класса, но не при каждом прорисовке вашего представления.

1 голос
/ 21 января 2011

О боже, это действительно меняет шрифт.

Только то, что оно не показывалось в предварительном просмотре в Eclipse, но показывалось в эмуляторе.

Проблема решена.

0 голосов
/ 18 июня 2014
public class CustomTextView extends TextView {

 public CustomTextView(Context context, AttributeSet attributes) {
  super(context, attributes);
  applyCustomFont(context);
 }

 private void applyCustomFont(Context context) {
  TypeFace customTypeFace = Typeface.createFromAsset(context.getAssets(), "custom_font_name");
  setTypeface(customTypeFace);
 }

 @Override
 public void setTextAppearance(Context context, int resid) {
  super.setTextAppearance(context, resid);
  applyCustomFont(context);
 }
}

Фрагмент кода создает пользовательский TextView и во время создания текстового представления устанавливает собственный шрифт
Когда вы пытаетесь программно установить внешний вид текста, пользовательский шрифт сбрасывается. Следовательно, вы можете переопределить метод setTextAppearance и снова установить собственный шрифт.

...