آموزش تغییر فونت کل برنامه به صورت یک جا
سلام
حتما شما هم موقع درست کردن لایوت اندروید خاصیت تایپ فیس رو برای ویو ها دیدن که میتونیم چهار تا مقدار رو بهش اختصاص بدیم (normal ، monospace ، sans ، serif ) حالا ما میخواییم این تایپ فیس ها رو override کنیم(به جز normal) و تایپ فیس های خودمونو بهش اختصاص بدیم با این کار میشه فونت کل برنامه رو به فونت دلخواه خودمون تغییر بدیم و از تنظیم فونت برای هر ویو به صورت تکراری بپرهیزیم خوب برای این کار ما نیاز به یک کلاس دارم که به صورت زیر تعریف میکنیم یادتون نره package name رو به package name پروژه خودتون تغییر بدین
package ir.p30prog.app.font;
import android.content.Context;
import android.graphics.Typeface;
import java.lang.reflect.Field;
public class TypefaceOverride {
public static void override(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 (Exception e) {
e.printStackTrace();
}
}
}
خب بعد از این که این کلاس رو ایجاد کردید باید تو کلاس اپلیکیشن برناممون تایپ فیس هایی رو که میخواییم override کنیم رو وارد کنیم به این صورت که در قسمت oncreate کلاس اپلیکیشن سه تا خط کد زیر رو مینویسیم(یادتون نره کلاس اپلیکیشنتون رو تو منیفست وارد کنید) هر کدومم نیاز نداشتین میتونین وارد نکنین
TypefaceOverride.override(this, "MONOSPACE", "koodak.ttf");//این برای تایپ فیس monospace هست
TypefaceOverride.override(this, "SERIF", "yekan.ttf");//این برای تایپ فیس serif هست
TypefaceOverride.override(this, "SANS_SERIF", "titr.ttf");// این برای تایپ فیس sans هست
پارامتر اول که معلومه کانتکس هست پارامتر دوم نام فیلد استاتیک کلاس TypeFace هست که فقط میتونین همین سه مقدار رو بهش بدین. پارامتر سوم باید مسیر فونتتون رو داخل فولدر assets رو وارد کنید.
حالا تو طراحی لایتون هر ویو رو خواستین میتونین تایپ فیس مخصوص به اون فونت رو انتخاب کنید اگه میخوایین کل برنامتون از تایپ فیس دیفالتی به جز نرمال استفاده کنه باید خط زیر رو داخل فایل استایل و قسمت تم برنامتون وارد کنید.
<item name="android:typeface">monospace</item>
یادتون باشه monospace رو به هر کدوم از سه تا از تایپ فیس هایی که میخوایین تغییر بدین
نتیجه این کار به صورت زیر خواهد بود
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .
