خیلی از دوستان با ساخت یک دیالوگ سفارشی مشکل دارند.و نحوه ی inflate کردن و دسترسی به شی های داخل اون رو بلد نیستند.
این روشی که امروز توضیح داده میشه، میشه گفت چندین امتیاز داره
1_یادگیری آسان(چون برمبنای اکتیویتی است و بیشتر دوستان آشنا هستند)
2_سفارشی کردن صفحه دیالوگ و طراحی موردنظر شخص برای آن
3_خواناتر شدن کدهای نوشته شده و ویرایش آسان اون.
روش کار :
ابتدا یک فایل xml با نام dialog_activity بسازید. و صفحه ی خودتون طراحی کنید. هر طوری که مایل هستید.
در مرحله بعد یک DialogAcitivty در فایل جاوا بسازید.
کد پیاچپی:
public class DialogActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dialog_activity);
Button ok=(Button)findViewById(R.id.button1);
ok.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//دستورات رو بنویسید.
}
});
// بقیه دستورات...
}
مرحله بعدی:
مهمترین بخش ساخت استایل دیالوگ هست .برای اینکار وارد پوشه value بشید و روی پوشه style.xml کلیک کنید.
و استایل زیر رو وارد کنید.
کد پیاچپی:
style name="custom_dialog" parent="@android:style/Theme.Dialog">
<item name="@android:windowBackground">@color/white</item>
<item name="@android:textColor">@android:color/black</item>
<item name="android:windowNoTitle">true</item>
</style>
در کد بالا :
درخط 1 نام استایل رو مشخص و بعد پدر ایشان! رو مشخص کردیم و ارث بری کرده.
در خط دوم بگ کراند دیالوگ مشخص کردیم .ابتدا رنگهای خودتون در فایل color.xml بسازید و اینجا بهش ارجاع بدید.
در خط سوم رنگ متن دیالوگ مشخص کردیم.
در خط چهارم ویژگی این که نوار عنوان آن حذف بشه.
شما میتونید ویژگی خیلی زیاد دیگه رو اینجا مشخص کنید.
حال وارد فایل color.xml بشید و رنگها رو بسازید.(اگر همچین فایلی وجود نداشت یکی بسازید.)
کد پیاچپی:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="black">#000</color>
<color name="white">#fff</color>
</resources>
گام آخر هم .این استایل رو روی اکتیویتی اعمال کنید.وارد قسمت AndroidManifest.xml بشید
کد پیاچپی:
<activity android:name="DialogActivity"
android:theme="@style/custom_dialog"></activity>
کار تمام است. دیدید که اصلا وارد مباحث inflate کردن و ساختار دیالوگ نشدیم.
و راحت میتونید هر پنجره دیالوگی رو واسه خودتون طراحی کنید.
موفق باشید.