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

تنظیم فونت پیش فرض به صورت Style

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

مجددا سلام

تویه برنامه من بیشتر از 500 تا text  استفاده شده

نمی دونم از style چطوری میشه استفاد کرد فقط تویه جواب ها سرچ کردم دیدم که یکی از راه های تغییر فونت اینه

سوالم اینه :

چطوری می شه فونت پیش فرضی رو که نرم افزار های اندورید ازش استفاده می کنند تغییر داد

می خوام با ین کار زحمت تعریف استایل یا تغییر فونت   500   تا  text   رو نداشته باشم

مرسی

نظرات

sadeghbarout 12 سال پیش
این سوال منم هست . خوشحال میشم یکی جواب بده
uncocoder 12 سال پیش
تعریف استایل ها و بسیاری دیگه از کارهای مفید هم اکنون تدوین شده و به زودی آپلود و قابل مطالعه است. در خصوص تغییر فونت متأسفانه جز راه دستی راهی وجود نداره چون Typeface یک کلاس است اما در خصوص سایر خصوصیات Text استایل ها قابل استفاده هستند.
Mr7 12 سال پیش
ممنون

پاسخ‌ها 3

h_uk2009 12 سال پیش

ببین بستگی داره ساختار تکست هات چیه چون من نمیدونم ولی این کارو میتونی بکنی
1- اگه تکست هات رو داینامیک تولید میکنی و همون لحظه روی صفحه نمایش میدی که مشکل خاصی نیست کافیه کد text.settextsize رو بزنی و تکست ها رو با یک حلقه سایزشون رو ست کنی
2- اگه تکست ها هر کدوم توی یک اکتیویتی و یک لایه خاصی هستند باید این کارو بکنی که راه سخت تر و زمان گیرتری هست
این تکه کدیه که خودم میزنم تا تکست هام رو ست کنم سریع این کد کمک میکنه که حتی اگه توی یک لایه نمیدونی متن یا عکس کد خودش چک کنه و اگه از جنس تکست هست اونا رو خصوصیاتشو ست میکنه .. نحوه استفاده از استایل رو وقت ندارم بت بگم وقت بشه توی همین پست برات مینویسم ! اما این به کارت میاد بزننننننننن لایکووووووووو !

    for (int i = 0; i < container.getChildCount(); i++)
{
View getchid = container.getChildAt(i);
if (getchid instanceof TextView) // اگه نوع ویویی که میگیری از جنس متنی و تکست هست فونتشو عوض کن
{
((TextView) getchid).setTypeface(G.face);
((TextView) getchid).setTextSize(25);
// ((TextView) getchid).setLineSpacing(50, 0);

}

}

نظرات

uncocoder 12 سال پیش
آفرین. فقط شاید بهتر باشه که اگر getchild هم یک Viewgroup بود به صورت Recursive داخلش هم جستجو و پردازش بشه. دقیقاً همین متد رو در یکی از سئوالات نوشته ام. ( سئوال Alu جان بود )
PandaStudio 12 سال پیش

سلام

من خودم از این متد استفاده میکنم

 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(), "bkoodak.ttf"));//bkoodak is my font
            }
        }
        catch (Exception e) {}
    }

نظرات

iSheykhi 12 سال پیش
میشه بیشتر درباره متدت توضیح بدی؟ دقیقا ورودی‌ها رو چی باید تعریف کرد؟ آیا تمام TextViewها رو شناسایی میکنه یا باید دستی بهش معرفی کنم؟!
sadeghbarout 12 سال پیش
تو این روش فقط کافیه لایه پدرجد(!)(D:) همه کنترل ها رو به این متد معرفی کنی(منظورم بالاترین لایه است که بقیه کنترل ها رو شامل شده) و خودش تمامی اجزای داخلی رو پیدا و typeface شون رو تنظیم میکنه
مجتبی یگانه 12 سال پیش
بله ، این روش رو تست کردم ، استاد آقاجانی عزیز راهنمایی کردند :)
h_r_v 12 سال پیش

راهی که من استفاده میکنم اینه:‌
یه کلاس به اسم MyTextView به شکل زیر بساز:

 	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 تعریف کنی
}
}}

بعد برو توی layout ها محتویات هر کدوم رو دونه دونه کپی کن توی برنامه Notepad++ و عبارت <TextView رو با عبارت <com.example.package.MyTextView جایگزین کنید که به جای اون عبارت اسم پکیج رو بزارید، اینجوری هر چه تغییر توی فایل MyTextView بدید در کل TextView ها اعمال میشه!

 

نظرات

مجتبی یگانه 12 سال پیش
روشی خیلی خوبیه ، اما نمیشه موقع Cast کردن به MyTextView که ساختیم Cast کنیم ؟! ، فکر کنم بشه !
underomeda 12 سال پیش
داداش میشه بیشتر توضیح بدی قسمت لیوت هارو؟

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