Хорошо !!
Этот вопрос довольно старый, но все же, если кто-то ищет (в 2015 году) ответ о том, как применить собственный шрифт ко всем текстовым представлениям с помощью кода XML, см. Ниже:
Сначала :
нам нужно добавить пользовательский шрифт в папку ресурсов внутри каталога вашего приложения:
.ttf или .otf , оба работают в случаеAndroid
Второй:
Создать класс CustomTextView, расширяющий TextView, как показано ниже:
public class CustomTextView extends TextView {
public CustomTextView(Context context) {
super(context);
}
public CustomTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public CustomTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public void setTypeface(Typeface tf) {
super.setTypeface(FontCache.getFont(getContext(),"fonts/<font_name>"));
}
}
Третий:
класс FontCacheиспользуется внутри метода setTypeface () в CustomTextView. Цель состоит в том, чтобы выполнить базовое кэширование шрифтов, используя HashMap:
public class FontCache {
private static Map<String,Typeface> fontMap = new HashMap<String,Typeface>();
public static Typeface getFont(Context context,String fontname){
if(fontMap.containsKey(fontname)){
return fontMap.get(fontname);
}
else{
Typeface tf = Typeface.createFromAsset(context.getAssets(),fontname);
fontMap.put(fontname,tf);
return tf;
}
}
}
Четвертый: [Последний шаг] Все, что мы сейчас делаем, это используем CustomTextView непосредственно внутри нашегоXML-файл везде, где требуется текстовое представление пользовательского шрифта:
<<package_name>.CustomTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Custom Font Text"
android:textSize ="18sp"
android:textAppearance="?android:textAppearanceSmall"
android:id="@+id/custom_txt"
/>
Извините, если это уже было опубликовано где-то на SO.Просто подумал поделиться, если кому-то это поможет !!