در اصل می تونید روی همون دیالوگ پیشفرض هم شخصی سازی هایی رو اعمال کنید.
فرض کنیم شما یک شئ دیالوگ می سازید، این شئ خصوصیات کلاس 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 باشه.
به هرحال شدنی هست، فقط باید تحقیق کنید تا بتونید بهشون دسترسی داشته باشید.