آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

آموزش تغییر فونت کل برنامه به صورت یک جا

peyman_m1992  9 سال پیش  9 سال پیش
+6 0

سلام

حتما شما هم موقع درست کردن لایوت اندروید خاصیت تایپ فیس رو برای ویو ها دیدن که میتونیم چهار تا مقدار رو بهش اختصاص بدیم (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 رو به هر کدوم از سه تا از تایپ فیس هایی که میخوایین تغییر بدین

نتیجه این کار به صورت زیر خواهد بود

 برای این سوال پاسخی وجود ندارد.

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .