mesbAAH

راهنمایی در مورد تغییر فونت Toolbar و NavigationView

3 ارسال در این موضوع قرار دارد

چطور میتونم فونت Toolbar و NavigationView را تغییر بدم؟
البته تا یه جاهایی هم پیش رفتم ولی توی تغییر فونت مواردی که زیر مجموعه دارن (تصویر را ببینید) به مشکل برخورم.
دوستان لطفا راهنمایی کنید؛ ممنون.

photo_2017-10-16_07-30-46.jpg

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

اگر شما احتمالا از Textview برای متون بالا استفاده کردید، میتونید خیلی راحت یک textview سفارشی درست کنید و بجای TextView اصلی از اون استفاده کنید. نه قط اینجا بلکه همه ی جاها دیگه مشکلی برای استفاده از فونت ندارید:

یه کلاس ایجاد کن و extend کن از textview و فونتش رو عوض کن:

public class mTextView extends TextView {

    public mTextView(Context context) {
        super(context);
        Typeface irsans=Typeface.createFromAsset(context.getAssets(),"iransans.ttf");
        this.setTypeface(irsans);
    }

    public mTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        Typeface irsans=Typeface.createFromAsset(context.getAssets(),"iransans.ttf");
        this.setTypeface(irsans);
    }
}

 

از این به بعد به جای textview از mTextView استفاده کن

اگر هم کلا با فونت آشنایی نداری بگو تا اونم بگم

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در در 1396/07/24, 07:33:13، mesbAAH گفته است :

چطور میتونم فونت Toolbar و NavigationView را تغییر بدم؟
البته تا یه جاهایی هم پیش رفتم ولی توی تغییر فونت مواردی که زیر مجموعه دارن (تصویر را ببینید) به مشکل برخورم.
دوستان لطفا راهنمایی کنید؛ ممنون.

photo_2017-10-16_07-30-46.jpg

یه راه هست که که میتونید با اون یکی از فونتهای اصلی رو تغییر بدید و با معرفی typeFace به textView فونت مورد نظرتون رو اعمال کنید...

با استفاده از روش زیر حتی فونت Toast هم تغییر میکنه و حالت پیش فرض رو روی فونت شما قرار میده، برای اینکار به روش زیر عمل کنید:

1- یه پوشه به اسم assets توی پوشه main درست کنید و داخل اون یک پوشه جدید به اسم fonts بسازید و فایل فونت مورد نظرتون رو توی اون کپی کنید:

2- فایل styles.xml که در پوشه values قرار داره باز کنید و کد زیر رو بهش اضافه کنید:

<item name="android:typeface">serif</item>

3- یه کلاس جاوا به اسم TypefaceUtil.java بسازید و کدهای زیر رو درونش قرار بدید:

public class TypefaceUtil {

    /**
     * Using reflection to override default typeface
     * NOTICE: DO NOT FORGET TO SET TYPEFACE FOR APP THEME AS DEFAULT TYPEFACE WHICH WILL BE OVERRIDDEN
     * @param context to work with assets
     * @param defaultFontNameToOverride for example "monospace"
     * @param customFontFileNameInAssets file name of the font from assets
     */
    public static void overrideFont(Context context, String defaultFontNameToOverride, String customFontFileNameInAssets) {
        try {
            final Typeface customFontTypeface = Typeface.createFromAsset(context.getAssets(), customFontFileNameInAssets);

            final Field defaultFontTypefaceField = Typeface.class.getDeclaredField(defaultFontNameToOverride);
            defaultFontTypefaceField.setAccessible(true);
            defaultFontTypefaceField.set(null, customFontTypeface);
        } catch (Exception e) {
        }
    }
}

3- حالا در MainActivity بعد از setContentView کد زیر رو قرار بدید تا تمامی فونتهایی که از نوع serif هستند به فونت مورد نظرمون تغییر کنه:

TypefaceUtil.overrideFont(getApplicationContext(), "SERIF", "fonts/BYekan.ttf");

4- حالا به عنوان قدم آخر در طراحی UI اگر یک TextView (یا هر آیتمی که قابلیت معرفی Typeface داشته باشه) کافیه که typeface اون رو روی serif قرار بدید:

android:typeface="serif"

** این روش یک مشکل اساسی داره فقط، اونم اینه که اگر از کتابخانه ای استفاده کنید که درون اون typeface معرفی شده باشه عمل نمیکنه...

در غیر این صورت دز تمامی حالتها جواب میده حتی اگر typeface برای آیتمهاتون معرفی نکنید...

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری