আপডেটের উত্তর:
অ্যান্ড্রয়েড 8.0 (এপিআই স্তর 26) এক্সএমএলে একটি নতুন বৈশিষ্ট্য, হরফ পরিচয় করিয়েছে। অ্যান্ড্রয়েড ৪.১ (এপিআই স্তর ১ 16) এবং তার থেকেও বেশি চলমান ডিভাইসগুলিতে কেবল এক্সএমএল বৈশিষ্ট্যটিতে ফন্টগুলি ব্যবহার করুন, সমর্থন লাইব্রেরি 26 ব্যবহার করুন।
এই লিঙ্কটি দেখুন
পুরানো উত্তর
ফন্টগুলি কাস্টমাইজ করার দুটি উপায় রয়েছে:
!!! সম্পদ / ফন্ট / iran_sans.ttf এ আমার কাস্টম ফন্ট
ওয়ে 1:
রিফ্রাকশন টাইপফেস.ক্লাস || কেপ সবচেয়ে ভালো উপায়
ক্লাসে ফন্টস ওভাররাইড.সেট ডেফল্টফন্ট () কল করুন অ্যাপ্লিকেশন প্রসারিত করুন, এই কোডটি সমস্ত সফ্টওয়্যার ফন্ট, এমনকি টোস্ট ফন্টগুলিও পরিবর্তিত করবে
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: সেটটাইপফেস ব্যবহার করুন
বিশেষ দেখার জন্য হরফ পরিবর্তন করতে সেটআপ টাইপফেস () কল করুন।
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);