अद्यतन उत्तर:
एंड्रॉइड 8.0 (एपीआई स्तर 26) एक नई सुविधा पेश करता है, एक्सएमएल में फोंट। एंड्रॉइड 4.1 (एपीआई स्तर 16) और उच्चतर चलाने वाले उपकरणों पर XML सुविधा में फ़ॉन्ट्स का उपयोग करें, समर्थन लाइब्रेरी 26 का उपयोग करें।
इस लिंक को देखें
पुराना उत्तर
फोंट अनुकूलित करने के दो तरीके हैं:
!!! संपत्ति / फोंट / iran_sans.ttf में मेरा कस्टम फ़ॉन्ट
तरीका 1:
रिफंड टाइपफेस।क्लास ||| सबसे अच्छा तरीका
कॉल FontsOverride.setDefaultFont () क्लास में एप्लीकेशन फैली हुई है, इस कोड के कारण सभी सॉफ्टवेयर फॉन्ट बदल जाएंगे, यहाँ तक कि टोस्ट्स फोंट भी
AppController.java
public class AppController extends Application {
@Override
public void onCreate() {
super.onCreate();
//Initial Font
FontsOverride.setDefaultFont(getApplicationContext(), "MONOSPACE", "fonts/iran_sans.ttf");
}
}
FontsOverride.java
public class FontsOverride {
public static void setDefaultFont(Context context, String staticTypefaceFieldName, String fontAssetName) {
final Typeface regular = Typeface.createFromAsset(context.getAssets(), fontAssetName);
replaceFont(staticTypefaceFieldName, regular);
}
private static void replaceFont(String staticTypefaceFieldName, final Typeface newTypeface) {
try {
final Field staticField = Typeface.class.getDeclaredField(staticTypefaceFieldName);
staticField.setAccessible(true);
staticField.set(null, newTypeface);
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
तरीका 2: setTypeface का उपयोग करें
विशेष दृश्य के लिए फ़ॉन्ट बदलने के लिए बस सेट टाइपफेस () पर कॉल करें।
CTextView.java
public class CTextView extends TextView {
public CTextView(Context context) {
super(context);
init(context,null);
}
public CTextView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init(context,attrs);
}
public CTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context,attrs);
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public CTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
init(context,attrs);
}
public void init(Context context, @Nullable AttributeSet attrs) {
if (isInEditMode())
return;
// use setTypeface for change font this view
setTypeface(FontUtils.getTypeface("fonts/iran_sans.ttf"));
}
}
FontUtils.java
public class FontUtils {
private static Hashtable<String, Typeface> fontCache = new Hashtable<>();
public static Typeface getTypeface(String fontName) {
Typeface tf = fontCache.get(fontName);
if (tf == null) {
try {
tf = Typeface.createFromAsset(AppController.getInstance().getApplicationContext().getAssets(), fontName);
} catch (Exception e) {
e.printStackTrace();
return null;
}
fontCache.put(fontName, tf);
}
return tf;
}
}
myTextView.setTypeface(myTypeface);