#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 Hashtablecache = 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));
Комментариев нет:
Отправить комментарий