بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

تغییر کل فونت برنامه توسط کد جاوا

مدیریت گفتگو
h_r_v 12 سال پیش
آخرین تغییر: 12 سال پیش

سلام! برنامه ی من دو زبان انگلیسی و فارسی داره

برای زبان فارسیش از فونت "کودک" استفاده شده، وقتی برنامه به صورت انگلیسی اجرا میشه عددا فارسی نشون داده میشن! میخواستم ببینم چجوری میتونم فونت کل برنامه را بوسیله کد جاوا عوض کنم! میدونم از طریق style میشه عوض کرد ولی کدی رو میخوام که بشه توی activity زد چون همچین شرطی رو توی برنامه تعریف کردم که زبان استفاده شده ی برنامه رو بگیره و اگه بود یه شرط رو بررسی کنه

String lang = getResources().getString(R.string.locale);

if(lang == "fa"){
//Doing Something :D
}

ممنون از وقتتون

نظرات

CreativeBoy 12 سال پیش
توی پروژه ماشین حساب تقریبا آخرای فیلم استاد توضیح دادن( یه ttf رو توی پوشه assets میریزیم، بعد با typeface میتونیم توی اکتیویتی تعریفش کنیم و به View ها فونت مورد نظر رو بدیم).راستی آقا نیما پیام خصوصیتونو چک کردید؟ من امروز یه پیام براتون فرستادم.
h_r_v 12 سال پیش
سلام. کار کردن با settypeface رو بلدم ولی اگه بخوای واسه هر تکست ویو جدا تعریف کنی خیلی طول میکشه.. دنبال یه راهیم که کل رو یه جا عوض کنه

پاسخ‌ها 3

CreativeBoy 12 سال پیش

سلام

میتونی یه کار قشنگ بکنی:

یه کلاس بساز که از TextView گرفته شده باشه و یه تابع توش باشه که فونتی رو برای textView بذاره، از این به بعد textView ها رو از کلاسی که ساختی تعریف کن.

public class MyTextView extends TextView {

    public MyTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        initialize();
    }

    public MyTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        initialize();
    }

    public MyTextView(Context context) {
        super(context);
        initialize();
    }

    private void initialize() {
        if (!isInEditMode()) {
            Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "font.ttf");
            setTypeface(tf);
        }
    }
}

 

نظرات

underomeda 12 سال پیش
چطوری با کلیک روی یک دکمه این کارو میه انجام داد؟
sadeghbarout 12 سال پیش
این روش خودش اتوماتیک textView ت رو با فونت "font.ttf" استایل دهی میکنه. حالا تو فقط کافه توی کد ها به جای font.ttf مثلا بذاری G.FontDefault بعد توی تنظیمات برنامه ات مقدار این متغییر رو تغییر بدی
h_r_v 12 سال پیش

این کد واسه TextView ها کار میکنه! نمیشه جامعترش کرد؟ که برای Button و edittext هم کار کنه؟

تازه میخوام یه شرط بررسی بشه که اگه یه string یه محتوا خاص داشت فونت ها عوض شه! توی این کد دستکاری کردم نشد! :|
اینکاریش کردم اما نشد :

      private void initialize() {
if (!isInEditMode()) {
String lang = getResources().getString(R.string.locale);
Log.i("locale", lang);
if (lang == "fa"){
Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "koodak.otf");
setTypeface(tf);
}}
}

نظرات

CreativeBoy 12 سال پیش
راه جامعتری بلد نیستم :|، برای بررسی کردن string باید به این شکل بنویسید ("lang.equals("fa،
hamidd 12 سال پیش
به جای lang == "fa" این رو بزارید:("lang.equals( "fa
hamidd 12 سال پیش
قبلا CreativeBoy گفته بود.الان کامنتشون رو دیدم.
mohsen-jj 12 سال پیش

من توی کلاس G متود تغییر فونت و اندازه و هرچی می خوام رو تعریف کردم و بعد داخل برنامه این متود رو واسه همه textView ها یا ... صدا زدم و اسم فونت مورد نظرم رو هم از طریق Preference ها ذخیره کردم تا هروقت کاربر تغییرش داد داخل Preference هم تغییر کنه و  فونت همشون با هم عوض بشه .

اون myFont رو بالا مقدار دهی کردم و مقدار داخل Preference رو داخلش ریختم .

و نکته آخر اینکه فکر کنم به عنوان ورودی تابع به جای TextView می شه View تعریف کرد و بعد چه TextView چه Button یا ... باشه فونتش عوض می شه (کاری که دوستمون  میخوان انجام بدن ) درسته دوستان ؟

 راه بهتری پیدا نکردم دیگه :) نمیدونم تا چه حد کد خوبی باشه ولی به هر حال کدش اینه :

 public static void setMyFont(TextView mytxt) {
		Typeface titr = Typeface.createFromAsset(currentActivity.getAssets(),
				"fonts/" + myFont);
		mytxt.setTypeface(titr);
}

نظرات


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