تغییر کل فونت برنامه توسط کد جاوا
سلام! برنامه ی من دو زبان انگلیسی و فارسی داره
برای زبان فارسیش از فونت "کودک" استفاده شده، وقتی برنامه به صورت انگلیسی اجرا میشه عددا فارسی نشون داده میشن! میخواستم ببینم چجوری میتونم فونت کل برنامه را بوسیله کد جاوا عوض کنم! میدونم از طریق style میشه عوض کرد ولی کدی رو میخوام که بشه توی activity زد چون همچین شرطی رو توی برنامه تعریف کردم که زبان استفاده شده ی برنامه رو بگیره و اگه بود یه شرط رو بررسی کنه
String lang = getResources().getString(R.string.locale);
if(lang == "fa"){
//Doing Something :D
}
ممنون از وقتتون
سلام
میتونی یه کار قشنگ بکنی:
یه کلاس بساز که از 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);
}
}
}
این کد واسه 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);
}}
}
من توی کلاس 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);
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .