Farzad Sarseifi

Custom Dialog در اندروید

1 ارسال در این موضوع قرار دارد

Dialog : دیالوگ ها پیغام هایی که برای کاربران در همان اکتیویتی جاری که هستند ظاهر میشود ،که بسته به نوع کاری که تعریف شده است، کار مورد نظر را انجام میدهد.،

برای درک بهتر دیالوگ ها تصویر زیر را نگاه کنید.

[align=center]o3282_1.png[/align]

در این مثال که ملاحضه میکنید،یه کادر لاگین نمایش داده میشود،که در درون یک اکتیویتی بوده و بعد از انجام موفقیت آمیز وارد صفحه مورد نظر میشود.

برای شروع کار یک Layout جدید به نام   dialog_layout.xml  ایجاد میکنیم

<?xml version="1.0" encoding="utf-8"?>    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical"    android:padding="10sp" >             android:id="@+id/txt_name"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:hint="@string/dialog_uname"        android:singleLine="true" >                          android:id="@+id/password"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:ems="10"        android:inputType="textPassword" >                 android:layout_width="match_parent"        android:layout_height="wrap_content" >                     android:id="@+id/btn_login"            android:layout_width="120dp"            android:layout_height="wrap_content"            android:text="@string/dialog_submit" />                     android:id="@+id/btn_cancel"            android:layout_width="120dp"            android:layout_height="wrap_content"            android:layout_alignParentTop="true"            android:layout_marginLeft="10dp"            android:layout_toRightOf="@+id/btn_login"            android:text="@string/dialog_cancel" />     

سپس در اکتیویتی خود باید، توابع onCreateDialog و   onPrepareDialog  را override کنیم.

برای اینکه با dialog خود id اختصاص دهیم در قسمت اعلان های عمومی کلاس،متغیری از نوع Int را برای آن تعریف میکنیم.

 final private static int DIALOG_LOGIN = 1;

بعد از اینکار،نوبت به تابع onCreateDialog  میرسد و آن را override میکنیم.

@Override protected Dialog onCreateDialog(int id) {   AlertDialog dialogDetails = null;   switch (id) {  case DIALOG_LOGIN:   LayoutInflater inflater = LayoutInflater.from(this);   View dialogview = inflater.inflate(R.layout.dialog_layout, null);    AlertDialog.Builder dialogbuilder = new AlertDialog.Builder(this);   dialogbuilder.setTitle("Login");   dialogbuilder.setView(dialogview);   dialogDetails = dialogbuilder.create();    break;  }   return dialogDetails; }

در مرحله بعدی،باید برای ویجت های آن کدی که مورد نیاز است را بنویسم.در درون تایع  onPrepareDialog    آنها را تعریف کرده و دستورات خود را مینویسیم.

      @Override protected void onPrepareDialog(int id, Dialog dialog) {   switch (id) {  case DIALOG_LOGIN:   final AlertDialog alertDialog = (AlertDialog) dialog;   Button loginbutton = (Button) alertDialog     .findViewById(R.id.btn_login);   Button cancelbutton = (Button) alertDialog     .findViewById(R.id.btn_cancel);   final EditText userName = (EditText) alertDialog     .findViewById(R.id.txt_name);   final EditText password = (EditText) alertDialog     .findViewById(R.id.password);    loginbutton.setOnClickListener(new View.OnClickListener() {     @Override    public void onClick(View v) {     alertDialog.dismiss();     Toast.makeText(       AndroidDialog.this,       "User Name : " + userName.getText().toString()         + "  Password : "         + password.getText().toString(),       Toast.LENGTH_LONG).show();    }   });    cancelbutton.setOnClickListener(new View.OnClickListener() {     @Override    public void onClick(View v) {     alertDialog.dismiss();    }   });   break;  } }

برای نمایش آن نیز،فقط با دستور زیر،هرجایی که نیاز است،دیالوگ را نمایش میدیهم،مثلا در oncreate یا هرجایی که مورد نیاز میباشد

 showDialog(DIALOG_LOGIN);

با این روش هرچند تعداد دیالوگ مورد نیاز است،میتوانید اضافه کنید

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

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

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری