نمایش نتایج 1 تا 6 از 6

نام تاپیک: استفاده از فونت سفارشی در کل برنامه !

  1. #1
    کاربر دائمی آواتار ghasem110deh
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    تهران
    پست
    1,148

    Question استفاده از فونت سفارشی در کل برنامه !

    سلام به همه :-)
    دوستان راهی هست که از یک فونت تو کل برنامه استفاده کرد و نیاز نباشه واسه هر تکست ویو یا باتون اون و اعمال کنیم !

  2. #2
    کاربر دائمی آواتار rezaricky
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    Tabriz
    سن
    32
    پست
    441

    نقل قول: استفاده از فونت سفارشی در کل برنامه !

    سلام.
    public class FontUtils {    static Typeface textFont = null;
    static Typeface lightFont = null;


    public static void overrideFonts(final Context context, final View v) {
    try {
    if (textFont == null) {
    textFont = Typeface.createFromAsset(context.getAssets(), "fonts/Vazir.ttf");
    }
    if (v instanceof ViewGroup) {
    ViewGroup vg = (ViewGroup) v;
    for (int i = 0; i < vg.getChildCount(); i++) {
    View child = vg.getChildAt(i);
    overrideFonts(context, child);
    }
    } else {
    ((TextView) v).setTypeface(textFont);
    }
    } catch (Exception e) {
    Log.d("font", "exception");
    }
    }


    public static void overrideFontsLight(final Context context, final View v) {
    try {
    if (lightFont == null) {
    lightFont = Typeface.createFromAsset(context.getAssets(), "fonts/Vazir-Light.ttf");
    }
    if (v instanceof ViewGroup) {
    ViewGroup vg = (ViewGroup) v;
    for (int i = 0; i < vg.getChildCount(); i++) {
    View child = vg.getChildAt(i);
    overrideFonts(context, child);
    }
    } else {
    ((TextView) v).setTypeface(lightFont);
    }
    } catch (Exception e) {
    Log.d("font", "exception");
    }
    }
    }

    برای استفاده هم root view رو بعنوان پارامتر میدیم.

  3. #3
    کاربر دائمی آواتار ghasem110deh
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    تهران
    پست
    1,148

    نقل قول: استفاده از فونت سفارشی در کل برنامه !

    اقا تشکر :-)
    یه توضیح مختصر هم بدی خیلی لطف کردین خصوصا این مورد رو
    برای استفاده هم root view رو بعنوان پارامتر میدیم.







  4. #4
    کاربر دائمی آواتار rezaricky
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    Tabriz
    سن
    32
    پست
    441

    نقل قول: استفاده از فونت سفارشی در کل برنامه !

    خواهش میکنم.
    root view یعنی همون viewgroup که تمام view ها رو شامل میشه .
    این تکه کد در واقع میاد root view رو پیمایش میکنه و اون ویوهایی که قابلیت تغییر فونت رو دارند فونت اشون رو تغییر میده.
    نحوه استفاده در یک fragment :

    public class MyFrag extends Fragment {


    .....


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.my_frag, container, false);

    FontUtils.overrideFonts(getActivity(),view);

    return view;
    }
    }

    my_frag.xml :

    <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">


    <TextView
    android:id="@+id/tv1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

    <TextView
    android:id="@+id/tv2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

    <TextView
    android:id="@+id/tv3"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

    </LinearLayout>

  5. #5
    کاربر دائمی آواتار Nevercom
    تاریخ عضویت
    دی 1387
    محل زندگی
    بستک
    سن
    36
    پست
    1,118

    نقل قول: استفاده از فونت سفارشی در کل برنامه !

    من قبلاً از همین روش استفاده می کردم، یعنی تو هر اکتیویتی این متد رو صدا میزدم و بعنوان پارامتر android.R.id.content رو براش میفرستادم.
    ایرادش این هست که باید در هر اکتیویتی، Dialog فرگمنت یا هر عنصر نمایشی دیگه این متد صدا زده بشه. و ایراد دیگه هم این هست که در شرایطی که تعداد ویو ها زیاد باشه، باعث تاخیر در نمایش اکتیویتی میشه.

    الان از این متد استفاده می کنم:

    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(defaultFontNameToO verride);
    defaultFontTypefaceField.setAccessible(true);
    defaultFontTypefaceField.set(null, customFontTypeface);
    } catch (Exception e) {
    Log.e("SET_FONT", "Can not set custom font " + customFontFileNameInAssets + " instead of " + defaultFontNameToOverride);
    }
    }


    در این حالت باید به تم (Theme) اصلی برنامه تون این آیتم رو هم اضافه کنید:
    <item name="android:typeface">serif</item>


    روش استفاده: تو کلاس Application فقط یکبار این متد رو صدا میزنید و نیاز نیست تو هر اکتیویتی جداگانه صدا زده بشه:
    overrideFont(this, "SERIF", "fonts/IRANSans.ttf");

    فونت من در Assets و در پوشه ی fonts ذخیره شده.

    این روش هم ایراداتی داره، یکی این اینکه بر اساس تست ها من روی همه ی ورژن ها تا 7.1 جواب میده به جز 5.0.1 (APIش خاطرم نیست) و مورد بعد هم اینکه اگر از کتابخانه ای استفاده بشه که خودش آیتم android:typeface رو override کرده باشه، فونت عوض نمیشه، نمونه ش رو میشه تو اکشن بار دید.

    به هرعنوان من روش دوم رو بیشتر می پسندم، شاید با ترکیب این دو به الگوی تغییر فونت کاملی برسید.

  6. #6

    نقل قول: استفاده از فونت سفارشی در کل برنامه !

    کتابخونه Calligraphy هم هست.

تاپیک های مشابه

  1. سوال: استفاده از یک imagelist در کل برنامه
    نوشته شده توسط rezarko در بخش C#‎‎
    پاسخ: 8
    آخرین پست: شنبه 03 فروردین 1392, 13:21 عصر
  2. مبتدی: استفاده از فونت خاص در برنامه
    نوشته شده توسط سعید کشاورز در بخش C#‎‎
    پاسخ: 3
    آخرین پست: چهارشنبه 10 آبان 1391, 16:11 عصر
  3. استفاده از فونت فارسی در برنامه
    نوشته شده توسط abcd_a در بخش C#‎‎
    پاسخ: 5
    آخرین پست: دوشنبه 01 آبان 1391, 14:05 عصر
  4. استفاده از DLL سفارشي در برنامه
    نوشته شده توسط m_zi در بخش C#‎‎
    پاسخ: 0
    آخرین پست: دوشنبه 16 اسفند 1389, 09:36 صبح
  5. استفاده از فونت دلخواه در برنامه
    نوشته شده توسط tc1000 در بخش برنامه نویسی در 6 VB
    پاسخ: 5
    آخرین پست: یک شنبه 06 آبان 1386, 22:34 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •