Страницы

Поиск по вопросам

пятница, 28 февраля 2020 г.

Шрифт в TextView Android

#android #шрифты #android_textview


Создаю динамически элемент TextView. Нужно установить шрифт, который использует остальная
часть программы. При вызове этого кода приложение падает.     

            TextView textDis = new TextView(this.getContext());
            textDis.setPadding(16, 16, 16, 16);
            textDis.setTextColor(getResources().getColor(R.color.colorBlack));
            textDis.setTextSize(18);
            //Ошибочный код ниже:
            textDis.setTypeface(getResources().getFont(R.font.fira_sans), Typeface.BOLD);


Спасибо за помощь!
    


Ответы

Ответ 1



Для шрифтов рекомендую использовать папку assets и устанавливать вот так: textDis.setTypeface(Typeface.createFromAsset(getAssets(), "my_font_bold.ttf"); Кроме того, чтобы избежать лагов (а если у вас много текстов со своим шрифтом они будут), рекомендую шрифт кэшировать, например так: public class TypeFaces { //---Кэширование шрифта--- private static final Hashtable cache = new Hashtable(); public static Typeface get(Context c, int type) { String name; if (type == 1) name = "my_font.ttf"; else name = "my_font_bold.ttf"; synchronized (cache) { if (!cache.containsKey(name)) { String path = name; try { Typeface t = Typeface.createFromAsset(c.getAssets(), path); cache.put(name, t); } catch (Exception e) { e.printStackTrace(); } } return cache.get(name); } } } И использовать так: textDis.setTypeface(TypeFaces.get(this, 2)); Если у вас много текстов, самым лучшим вариантом будет создать кастомный TextView, где в init() шрифт будет будет выставляться автоматически. Либо можно воспользоваться методом из support библиотеки: textDis.setTypeface(ResourcesCompat.getFont(context, R.font.my_font));

Комментариев нет:

Отправить комментарий