Настройка кнопки текста шрифта в Android - PullRequest
14 голосов
/ 16 июня 2011

У меня есть button, созданный с помощью виджетов Android.Я хочу установить шрифт текста кнопки на Helv Neue 67 Med Cond.Как получить этот шрифт и установить для него текст кнопки в файле макета Android?

Ответы [ 7 ]

24 голосов
/ 15 августа 2013

Полагаю, вы, возможно, уже нашли ответ, но если нет (и для других разработчиков), вы можете сделать это так:

1.Вы хотите сохранить "Helv Neue 67 Med Cond.ttf "в папке активов.затем

для TextView

  TextView txt = (TextView) findViewById(R.id.custom_font);
  Typeface typeface = Typeface.createFromAsset(getAssets(), "Helv Neue 67 Med Cond.ttf");
  txt.setTypeface(typeface);

для кнопки

  Button n=(Button) findViewById(R.id.button1);
  Typeface typeface = Typeface.createFromAsset(getAssets(), "Helv Neue 67 Med Cond.ttf");
  n.setText("show");
  n.setTypeface(typeface);
16 голосов
/ 16 июня 2011

Сначала вы должны поместить файл ttf в папку активов, а затем Вы можете использовать приведенный ниже код, чтобы установить пользовательский шрифт в TextView, так же, как вы делаете это для кнопки:

TextView txt = (TextView) findViewById(R.id.custom_font);
Typeface font = Typeface.createFromAsset(getAssets(), "Helv Neue 67 Med Cond.ttf");
txt.setTypeface(font);
3 голосов
/ 05 февраля 2016

Если вы планируете добавить один и тот же шрифт к нескольким кнопкам, я предлагаю вам пройти весь путь и реализовать кнопку подкласса:

public class ButtonPlus extends Button {

    public ButtonPlus(Context context) {
        super(context);
        applyCustomFont(context);
    }

    public ButtonPlus(Context context, AttributeSet attrs) {
        super(context, attrs);
        applyCustomFont(context);
    }

    public ButtonPlus(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        applyCustomFont(context);
    }

    private void applyCustomFont(Context context) {
            Typeface customFont = FontCache.getTypeface("fonts/candy.ttf", context);
            setTypeface(customFont);
        }
    }

А вот FontCache для уменьшения использования памяти на старых устройствах:

public class FontCache {

    private static Hashtable<String, Typeface> fontCache = new Hashtable<>();

    public static Typeface getTypeface(String name, Context context) {
        Typeface tf = fontCache.get(name);
        if(tf == null) {
            try {
                tf = Typeface.createFromAsset(context.getAssets(), name);
            }
            catch (Exception e) {
                return null;
            }
            fontCache.put(name, tf);
        }
        return tf;
    }
}

И, наконец, пример использования в макете:

 <com.my.package.buttons.ButtonPlus
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button_sometext"/>

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

Также вы можете увидеть этот учебник и пример в GitHub .

2 голосов
/ 16 июня 2011

Android поставляется с 3 шрифтами (Sans, Serif, Monospace), к которым можно получить доступ с помощью android:typeface=”FONT_NAME”.

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

TextView txt = (TextView) findViewById(R.id.custom_font);
  Typeface typeface = Typeface.createFromAsset(getAssets(), "Helv Neue 67 Med Cond.ttf");
  txt.setTypeface(typeface);

Некоторые похожиевопросы Пользовательские шрифты в Android и Android - Использование пользовательских шрифтов .

1 голос
/ 16 июня 2011

Вы можете использовать:

android:typeface="yourfont"
0 голосов
/ 16 июня 2011

Это хорошая статья, я использовал ее несколько раз и работает: http://mobile.tutsplus.com/tutorials/android/customize-android-fonts/

0 голосов
/ 16 июня 2011

Вам необходимо скачать шрифт Helv Neue 67 Med Cond и сохранить его в папке активов. пусть скачанный шрифт будет myfont.ttf

Используйте следующий код для установки шрифта

Typeface tf = Typeface.createFromAsset(getAssets(), "myfont.ttf");
        TextView TextViewWelcome = (TextView)findViewById(R.id.textViewWelcome);
        TextViewWelcome.setTypeface(tf);

Спасибо Дипак

...