Comments 11
Ожидал чего-то большего, а не просто кастомную текстВьюшку. И этот подход вовсе не решает проблему использования кастомного шрифта во Всём проекте — ведь ещё есть кнопки, спиннеры, диалоги,…
В этом решении есть одна проблема — для каждого TextView вы будете выполнять загрузку шрифта из ассетов и создавать сам экземпляр шрифта. Нужно как минимум реализовать статическое хранение шрифта.
Подскажите как?
Возможно в классе Application реализовать подгрузку
Вот так
private static Typeface arialTypeface;
public static final Typeface Arial(Context ctx) {
if (arialTypeface == null) {
arialTypeface = Typeface.createFromAsset(ctx.getAssets(), "fonts/arial.ttf");
}
return arialTypeface;
}
Чуть улучшенный вариант (соблюдены соглашения о именовании, а «arialTypeface» не захардкорено = в любой момент можно использовать любой шрифт, не добавляя в код лишний «private static Typeface ...»):
public static final HashMap<String, Typeface> sTypefaceCache = new HashMap<String, Typeface>();
public static final Typeface getTypeface(AssetManager mgr, String path) {
if(!sTypefaceCache.containsKey(path)) {
Typeface tf = Typeface.createFromAsset(mgr, path);
sTypefaceCache.put(path, tf);
}
return sTypefaceCache.get(path);
}
Еще один способ решения, применить на рутовый элемент лейаута во такой утилитный метод,
он автоматически пробежит по всем текстовым элементам и подставит им ваш Typeface с новым шрифтом:
он автоматически пробежит по всем текстовым элементам и подставит им ваш Typeface с новым шрифтом:
public static void applyCustomFont(ViewGroup list, Typeface customTypeface) {
for (int i = 0; i < list.getChildCount(); i++) {
View view = list.getChildAt(i);
if (view instanceof ViewGroup) {
applyCustomFont((ViewGroup) view, customTypeface);
} else if (view instanceof TextView) {
((TextView) view).setTypeface(customTypeface);
}
}
}
Вы перепутали ссылку на источник и забыли пометить пост как перевод.
Мое предположение строится на этом ответе со StackOverflow ( http://stackoverflow.com/a/7197867/1219241 ), который полностью повторяет ваш код и которым я сам пользовался несколько дней назад.
Мое предположение строится на этом ответе со StackOverflow ( http://stackoverflow.com/a/7197867/1219241 ), который полностью повторяет ваш код и которым я сам пользовался несколько дней назад.
Sign up to leave a comment.
Подключение шрифтов в своем проекте