تغییر فونت برنامه
طبق فیلم استاد من استایل هایی رو واسه هر ایتم درست کردم میخوام توی یه اکتیوتی که اکتیوتی تنظیمات هست استایل های مربوط به هر ایتم رو روی دکمه های مخصوص به هر ایتم تغییر بدم این امکان پذیر هست؟مثل نوع فونت رو تغییر بدم با کلیک روی یه دکمه که لیستی از فونت هارو بیاره
این ماجرا قبلا هم بحث شده. اینجا یه جمع بندی روی این موضوع میکنم :
اگه منظورت تغیر فونته کافیه یه لیستی از فونت هات رو توی اکتیویتی تنظیمات نشون بدی بعد وقتی کاربر یکی رو انتخاب کرد اونو توی یه saredPreferences و یه متغییر توی G مثل fontDefault ذخیره کنی .
فقط خواست باشه که باید در ابتدای لود برنامه ات این مقدار رو از saredPreferences بخونی و توی fontDefault ذخیره کنی
برای اعمال این تنظیمات 2 راه صحیح داری:
1- اعمال این تغییرات روی تمام اجزای هر صفحه با این کد:
private void overrideFonts(final Context context, final View v) {
try {
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 if (v instanceof TextView) {
((TextView) v).setTypeface(Typeface.createFromAsset(context.getAssets(), G.FontDefault ;
}
}
catch (Exception e) {}
}
همونطور که مشخصه این کد رو در ابتدای اکتیویتی مثلا در بخش oncreat میذاری و Context و لایه اصلی دربرگیرنده اجزا صفحه رو به عنوان ورودی بهش میدی. (بهتره این کد رو توی یه کلاس دیگه بذارید و فقط توی اکتیویتی های دیگه ازش استفاده کنید)
2- اعمال این تغییرات مستقیما روی textView با ساخت یک custom 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(), G.FontDefault);
setTypeface(tf);
}
}
}
اینم که همونطور که مشخصه یه TextView سفارشی میسازی و در برنامه ات به جای یه TextView معمولی ، از این استفاده میکنی
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .