آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

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

h_r_v  12 سال پیش  12 سال پیش
+4 0

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

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

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

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

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

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

سلام

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

یه کلاس بساز که از 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);
        }
    }
}

 

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

این کد واسه 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);
}}
}
0 0
راه جامعتری بلد نیستم :|، برای بررسی کردن string باید به این شکل بنویسید ("lang.equals("fa، (12 سال پیش)
0 0
به جای lang == "fa" این رو بزارید:("lang.equals( "fa (12 سال پیش)
0 0
قبلا CreativeBoy گفته بود.الان کامنتشون رو دیدم. (12 سال پیش)
پاسخ به سوال 
mohsen-jj  12 سال پیش
+1 0

من توی کلاس 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);
}

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