ورود

View Full Version : تغییر استایل ( فونت، رنگ ، اندازه ، ... ) آیتم های یک AlertDialog



alireza142
یک شنبه 27 مهر 1393, 10:17 صبح
سلام خدمت دوستان مجازی عزیز

ان شاالله که همیشه سالم و تندرست باشید

آیا امکان تغییر فونت و اندازه و رنگ و .... مشخصه های AlertDialog (عنوان و متن هشدارش) وجود دارد؟ نمی خوام به صورت شخصی سازی شده بسازم. همون حالت زمینه مشکی خود اندروید رو می خوام. اما در تبلت ها فونتش خیلی ریزه. آیا میشه بزرگترش کرد یا نه ؟ اگه میشه لطفا راهنمایی بفرمایید.



ممنون از وقتی که صرف می کنید...:چشمک:

slr560
یک شنبه 27 مهر 1393, 10:33 صبح
اینکه بخوای پس زمینه و فونتشو تغییر بدی باید خودت بشینی واسش بسازی و درست کنی
ولی یه راه حل بهتر و کامل تر دیگه هم هست
استفاده از کتابخونه زیر:
https://github.com/sd6352051/NiftyDialogEffects

pesare
شنبه 22 آذر 1393, 10:31 صبح
چطوری میتونم این lib رو به پروژه اضافه کنم و ازش استفاده کنم؟

tux-world
شنبه 22 آذر 1393, 16:17 عصر
این فایل (https://github.com/downloads/JakeWharton/NineOldAndroids/nineoldandroids-2.4.0.jar) رو به عنوان یه لایبرری به پروژت اضافه کن. برای اضافه کردن اینو ببین. (http://stackoverflow.com/questions/3280353/how-to-import-a-jar-in-eclipse) بعدش به راحتی از کدی مثل زیر استفاده کن


dialogBuilder
.withTitle("Modal Dialog")
.withMessage("This is a modal Dialog.")
.show();

pesare
شنبه 22 آذر 1393, 17:05 عصر
نباید چیزی Import کنم؟

pesare
شنبه 22 آذر 1393, 17:33 عصر
اگه میشه یه Sample بزارید اینجا ممنون میشم

Nevercom
شنبه 22 آذر 1393, 23:38 عصر
در اصل می تونید روی همون دیالوگ پیشفرض هم شخصی سازی هایی رو اعمال کنید.

فرض کنیم شما یک شئ دیالوگ می سازید، این شئ خصوصیات کلاس View رو هم داره، می تونید به محتواش دسترسی داشته باشید و تغییرات رو روی اون اعمال کنید.

ما یکسری id های خاص در اندروید داریم، مثلاً android.R.id.content درواقع id ویویی هست که همه ی ویوهای دیگه داخلش نمایش داده میشن.

مثلاً در اکتیویتی اگر از کد زیر استفاده کنید:

View v = (View) findViewById(android.R.id.content);
شئ v رفرنسی هست به هرچیزی که اکتیویتی نمایش میده (که میشه والد همه ی ویوهای دیگه که در لی اوت ایجاد کردید)، حالا با این ویو می تونید کار کنید و به اشیاء دیگه دسترسی داشته باشید
نمونه کدی که برای تغییر فونت همه ی TextView های موجود در اکتیوی هست رو براتون مثال میزنم:
public void overrideFonts(final View v) {final boolean isBelowICS = VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH;
try {
if (v instanceof ViewGroup) {
final ViewGroup vg = (ViewGroup) v;
for (int i = 0; i < vg.getChildCount(); i++) {
final View child = vg.getChildAt(i);
overrideFonts(child);
}
} else {
final Typeface font = Typeface.createFromAsset(context.getAssets(),
"fonts/adob2.otf");
if (v instanceof TextView) {
((TextView) v).setTypeface(font);
if (isBelowICS) {
((TextView) v).setText(PersianReshape.reshape(((TextView) v).getText()
.toString()));
// v.setAnimation(AnimationUtils.loadAnimation(contex t,
// R.anim.button));
}
} else if (v instanceof EditText) {
((EditText) v).setTypeface(font);
if (isBelowICS) {
((EditText) v).setText(PersianReshape.reshape(((EditText) v).getText()
.toString()));
}
} else if (v instanceof Button) {
((Button) v).setTypeface(font);
if (isBelowICS) {
((Button) v).setText(PersianReshape.reshape(((Button) v).getText()
.toString()));
}


}
}


} catch (final Exception e) {
}
}

این کد فونت تمام TextView ها، EditText و Button های موجود در Viewی موردنظر رو عوض می کنه و متنشون رو با استفاده از کلاس PersianReshape برای نمایش فارسی رو دستگاه های قدیمی آماده می کنه.
نحوه ی استفاده رو ببینید:
overrideFonts(findViewById(android.R.id.content));
حالا برای استفاده از این کد در دیالوگ کافیه به شکل زیر ازش استفاده کنیم:
overrideFonts(dialog.findViewById(android.R.id.con tent));

id های دیگه ای هم موجود هستن که من دقیقن ازشون اطلاع ندارم، مثلاً ممکنه id شئ TextView که عنوان رو نمایش میده، در Dialog چیزی شبیه به android.R.id.textView1 باشه.

به هرحال شدنی هست، فقط باید تحقیق کنید تا بتونید بهشون دسترسی داشته باشید.

pesare
یک شنبه 23 آذر 1393, 08:37 صبح
اگه از دوستان کسی Sample داره بزاره ما هم استفاده کنیم

MehdiElexal
جمعه 16 بهمن 1394, 11:43 صبح
دوستان کسی میتونه این https://github.com/sd6352051/NiftyDialogEffects آموزشش رو برای آندروید استدیو بذاره ؟ کامل توضییح نداده تو خود گیت هاب ، قسمت مانیفست رو گیر کردم ، ممنون میشم