مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

hoseinshahbazi

عضویت از 1393/02/11

فونت در اندروید

  • شنبه 1 اسفند 1394
  • 11:11
تشکر میکنم

سلام من می خوام به تمام کنترل های activity فونت بدم یک راهش اینه که من باید در کد  typeface تعریف کنم و  از assetبخونم اما کار سختیه!!

ایا راهی هست که من یه کل پروژه یک فونت از ASSET بدم مثلا Irannastaqil ؟ ایا امکان پذیر هست یا نه 

ممنون

پاسخ های این پرسش

تعداد پاسخ ها : 4 پاسخ
کاربر سایت

نرجس اسماعیلی

عضویت از 1393/01/20

  • شنبه 1 اسفند 1394
  • 13:31

سلام راه منطقی اینه که شما داخل پوشهی assets فونت و قرار دهید و در کلاسی که مربوط به تنظیمات application تون هست یک typeface تعریف کنید.و بعد در کلاس هایی که می خواهید فونت تاثیر داشته باشد از آن کلاس ارث بری کند.

کاربر سایت

نرجس اسماعیلی

عضویت از 1393/01/20

  • شنبه 1 اسفند 1394
  • 23:54

یک مدل روش دیگه هم هست اینکه از یک textview استفاده نمایید وآن را تعریف کنید و بعد داخل activity آن را ارث بری کند و بعد داخل  typeface آن را تنظیم می کنیم، بعد هر جا که xml ای تعریف کنید از این Textview استفاده می نماییم.

 

کاربر سایت

hoseinshahbazi

عضویت از 1393/02/11

  • دوشنبه 3 اسفند 1394
  • 11:48

سلام 

من یک جواب پیدا کردم برای خودم که عالی هم هست  اول کلاس زیر رو باید ایجاد کنیم


public class FontManager {



    public static void markAsIconContainer(Context Con,View v) {
        Typeface typeface = Typeface.createFromAsset(Con.getAssets(), "Yekan.ttf");
        if (v instanceof ViewGroup) {
            ViewGroup vg = (ViewGroup) v;
            for (int i = 0; i < vg.getChildCount(); i++) {
                View child = vg.getChildAt(i);
                markAsIconContainer(Con,child);
            }
        } else if (v instanceof TextView) {
            ((TextView) v).setTypeface(typeface);
        }
    }
}

سپس 

markAsIconContainer رو در هر صفحه فرخوانی کنیم 

این تابع تمام Textview های صفحه رو فونت مورد نظر رو می ده نیازی نیست هر TextView رو جدا بدیم 

و مشکل هم حل شد 

کاربر سایت

hoseinshahbazi

عضویت از 1393/02/11

  • دوشنبه 3 اسفند 1394
  • 11:48

سلام 

من یک جواب پیدا کردم برای خودم که عالی هم هست  اول کلاس زیر رو باید ایجاد کنیم


public class FontManager {



    public static void markAsIconContainer(Context Con,View v) {
        Typeface typeface = Typeface.createFromAsset(Con.getAssets(), "Yekan.ttf");
        if (v instanceof ViewGroup) {
            ViewGroup vg = (ViewGroup) v;
            for (int i = 0; i < vg.getChildCount(); i++) {
                View child = vg.getChildAt(i);
                markAsIconContainer(Con,child);
            }
        } else if (v instanceof TextView) {
            ((TextView) v).setTypeface(typeface);
        }
    }
}

سپس 

markAsIconContainer رو در هر صفحه فرخوانی کنیم 

این تابع تمام Textview های صفحه رو فونت مورد نظر رو می ده نیازی نیست هر TextView رو جدا بدیم 

و مشکل هم حل شد 

نحوه فراخونی 

FontManager.markAsIconContainer(context, view);

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)