بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
تغییر فونت برنامه به صورت یک جا (حل شد + آموزش)
سلام دوستان من میخوام توی برنامه از فونت یکان استفاده کنم و کل برنامه ازش استفاده کنم از کدی که از همین جا پیدا کردم استفاده کردم روی شبیه ساز تغیییر می کنه اما روی گوشی تست کردم نشد گوشی ال جی اندروید 5
public class TypefaceUtil { 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) { Log.e("TypefaceUtil", "Can not set custom font " + customFontFileNameInAssets + " instead of " + defaultFontNameToOverride); } } }
داخل کلاس G
TypefaceUtil.overrideFont(getApplicationContext(), "SERIF", "fonts/BYEKAN.TTF");
حتی این خط ها را هم اضافه کردم
TypefaceUtil.overrideFont(getApplicationContext(), "DEFAULT", "fonts/BYEKAN.TTF"); TypefaceUtil.overrideFont(getApplicationContext(), "MONOSPACE", "fonts/BYEKAN.TTF"); TypefaceUtil.overrideFont(getApplicationContext(), "SERIF", "fonts/BYEKAN.TTF"); TypefaceUtil.overrideFont(getApplicationContext(), "SANS_SERIF", "fonts/BYEKAN.TTF"); TypefaceUtil.overrideFont(getApplicationContext(), "DroidSans", "fonts/BYEKAN.TTF"); TypefaceUtil.overrideFont(getApplicationContext(), "Roboto-Regular", "fonts/BYEKAN.TTF"); TypefaceUtil.overrideFont(getApplicationContext(), "Roboto-Bold", "fonts/BYEKAN.TTF"); TypefaceUtil.overrideFont(getApplicationContext(), "reboot", "fonts/BYEKAN.TTF");
داخل style:
<style name="AppBaseTheme" parent="Theme.AppCompat.NoActionBar"> <item name="android:textSize">14sp</item> <item name="android:textStyle">bold</item> <item name="android:typeface">serif</item> </style> <style name="AppTheme" parent="AppBaseTheme"> </style>
کسی راهی داره
جواب در پاسخ آخر
+3
0
آموزش استفاده از فونت : لینک (8 سال پیش)
0
0
این آموزش حذف شده ؟؟
پیداش نکردم آموزش ست کردن فونت فارسی رو (7 سال پیش)
برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال
احمد
8 سال پیش
+7
0
با تشکر از مهندس کاشی زاده مشکلم حل شد
ابتدا فونت را در پوشه assets کپی کنید در بالای کلاس G کد زیر را قرار بدین:
public static Typeface typeface;
public static Context context;
در متد oncreate کلاس G:
context = getApplicationContext();
typeface = Typeface.createFromAsset(getAssets(), "Bnazanin.ttf");
در ابتدای هر activity کد زیر را بنویسید:
HelperUI.persianizer((ViewGroup) getWindow().getDecorView());
کد کلاس HelperUI:
public class HelperUI { public static void persianizer(ViewGroup viewGroup) { try { int childcount = viewGroup.getChildCount(); for (int i = 0; i < childcount; i++) { View child =viewGroup.getChildAt(i); if (child instanceof ViewGroup) { persianizer((ViewGroup) child); continue; } if (child instanceof TextView) { ((TextView) child).setTypeface(G.typeface); } } } catch (Exception e) { e.printStackTrace(); } } }
سلام.دوستان من طبق اموزشهای استاد کاشی زاده تونستم این کار رو انجام بدم،به شما هم توصیه میکنم حتما اموزشهای ایشون رو دانلود و مطالعه کنید.فقط یه سوال :) اگه کدی که قراره توی اکتیویتی بزاریم که همه متنهای داخل اون اکتیویتی فونتشون تغییر کنه رو بزاریم داخل اکتیویتیی که یه لیست ویو بهش وصله فقط فونت اولین اداپتر رو تغییر میده برای این کار من اومدم داخل متد fill کلاس Adapter فونت رو هر بار که متد اجرا میشه به تکست ها set میکنم ولی این کار اصلا بهینه نیست(البته به نظر من) خواستم نظر شما رو هم بدونم و اینکه ایا راه دیگه ای هم وجود داره؟ (8 سال پیش)
به نظر من از کتابخونه ها و رفلکشن جاوا برای تغییر فونت استفاده نکنید چون در بعضی از مواقع باعث کند شدن و پایین اومدن پرفرمنس برنامه میشن مخصوصا در مواقعی که ایتمهایی در لیست ویو داشته باشید که تعداد زیادی تکست برای نمایش داشته باشند.
کاری که من میکنم اینه که میام یک کستوم تکست ویو ، باتن، ادیت تکست و... درست میکنم و در داخل اونا فونتشون رو تبدیل به فونت دلخواهم میکنم. مزیتی که این روش داره اینه که شما میتونید با تعریف کردن یک سری اتریبیوت ویو مورد نظرتون رو اختصاصی تر کنید (8 سال پیش)
پاسخ به سوال
Iman1000
6 سال پیش
0
0
من برای استفاده در ادپتور ریساکلر ویو دچار مشکل شدم که نمی دونم در چه متدی این رشته رو قرار بدم
HelperUI.persianizer((ViewGroup) .getWindow().getDecorView());
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .