Dialog是常用的一種Android控件,一般常用的形式有九種,
Android Dialog的九種常用形式
。第一種,最常見的普通dialog
private void nomalDialog() { //創(chuàng)建對話框?qū)ο螅篈lertDialog的內(nèi)部類Builder的對象 AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this); //給對話框設(shè)置圖標(biāo) builder.setIcon(R.drawable.ic_launcher); //設(shè)置Title builder.setTitle(Title); //設(shè)置對話框的信息內(nèi)容 builder.setMessage(是否刪除選中的數(shù)據(jù)); //設(shè)置選擇按鈕 builder.setPositiveButton(刪除, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //進(jìn)行刪除操作 Toast.makeText(MainActivity.this, 點(diǎn)擊了刪除按鈕, Toast.LENGTH_SHORT).show(); } }); builder.setNegativeButton(取消, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, 點(diǎn)擊了取消----按鈕, Toast.LENGTH_SHORT).show(); } }); //顯示對話框 builder.show(); }
第二種 列表對話框
private void listDialog() { AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this); builder.setTitle(請做出選擇); builder.setItems(R.array.strs, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, getResources().getStringArray(R.array.strs)[which], Toast.LENGTH_SHORT).show(); } }); builder.show(); }
第三種 單選列表對話框,淘寶取消訂單原因就是用的此控件
private void singleDialog() { AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this); //strs為在valuse目錄下新建一個(gè)arrays.mxl文件 final String[] strs=getResources().getStringArray(R.array.strs); //給Dialog設(shè)置單選選項(xiàng)。參數(shù):1數(shù)據(jù)源 2默認(rèn)選中項(xiàng) 3監(jiān)聽 builder.setSingleChoiceItems(strs, 1, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { System.out.println(===witch==+which);// Dialog對象 whitch選中項(xiàng) Toast.makeText(MainActivity.this, getResources().getStringArray(R.array.strs)[which], Toast.LENGTH_SHORT).show(); } }); //選擇結(jié)束后不會自動消失對話框,so加上按鈕 builder.setPositiveButton(確定, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { System.out.println(===witch=btnclick=+which); } }); dialogs = builder.show(); }
第四種 多選列表對話框
private void mutiDialog() { AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this); final boolean[] checkedState=new boolean[3]; builder.setMultiChoiceItems(R.array.strs, checkedState, new OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { } }); builder.setPositiveButton(確定, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { String str=; for(int i=0;i<3;i++){ if(checkedState[i]) str+=true; else str+=false; } Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show(); } }); builder.show(); }
第五種 自定義布局對話框
private void mdefineDialog() { AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this); //內(nèi)容布局轉(zhuǎn)換成View View view=View.inflate(MainActivity.this, R.layout.view_dialog, null); //獲取Dialog內(nèi)容View中的控件 final EditText etxtv1=(EditText) view.findViewById(R.id.etxtv1); final EditText etxtv2=(EditText) view.findViewById(R.id.etxtv2); builder.setView(view);//把View添加進(jìn)Dialog //給Dialog添加按鈕 builder.setPositiveButton(登陸, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this,etxtv1.getText().toString()+etxtv2.getText().toString(), Toast.LENGTH_SHORT).show(); } }); builder.show(); }
第六種 進(jìn)度對話框
private void progressDialog() { ProgressDialog proDia=new ProgressDialog(MainActivity.this); proDia.setMessage(正在加載...); proDia.show(); //消失對話框// proDia.dismiss(); }
第七種 水平進(jìn)度對話框
private void progressHDialog() { final ProgressDialog proD=new ProgressDialog(MainActivity.this); //設(shè)置進(jìn)度條的樣式 proD.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); //設(shè)置進(jìn)度條的最大進(jìn)度 proD.setMax(100); new Thread(new Runnable(){ @Override public void run() { for(int i=0;i<=100;i++){ try { Thread.sleep(200); proD.setProgress(i); if(i==100){ proD.dismiss(); } } catch (InterruptedException e) { e.printStackTrace(); } } }}).start(); proD.show(); }
第八種 日期對話框
private void DateDialog() { //日期選擇 OnDateSetListener DL=new OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { //參數(shù)選擇結(jié)果:年 月 日 Toast.makeText(MainActivity.this,year +:+monthOfYear+:+dayOfMonth, Toast.LENGTH_SHORT).show(); } }; //日期選擇對話框:參數(shù)1上下文 參數(shù)2: 參數(shù)...默認(rèn)顯示日期 實(shí)際顯示的月份比這里設(shè)置的月份數(shù)會多1個(gè)月 DatePickerDialog DD=new DatePickerDialog(MainActivity.this, DL, 2015, 4, 12); //顯示 DD.show(); }
第九種 時(shí)間對話框
private void TimeDialog() { OnTimeSetListener timeL=new OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { //參數(shù):參數(shù)2選擇的小時(shí) 參數(shù)3:分鐘 Toast.makeText(MainActivity.this,hourOfDay +:+minute, Toast.LENGTH_SHORT).show(); } }; //參數(shù):參數(shù)1:上下文對象 參數(shù)2:OnTimeSetListener 參數(shù)3:對話框彈出以后默認(rèn)顯示時(shí)間 參數(shù)5:是否是24小時(shí) TimePickerDialog time=new TimePickerDialog(MainActivity.this, timeL, 0, 0, false); time.show(); }