Dialog是常用的一种Android控件,一般常用的形式有九种。
第一种,最常见的普通dialog
private void nomalDialog() { //创建对话框对象:AlertDialog的内部类Builder的对象 AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this); //给对话框设置图标 builder.setIcon(R.drawable.ic_launcher); //设置Title builder.setTitle("Title"); //设置对话框的信息内容 builder.setMessage("是否删除选中的数据"); //设置选择按钮 builder.setPositiveButton("删除", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //进行删除操作 Toast.makeText(MainActivity.this, "点击了删除按钮", Toast.LENGTH_SHORT).show(); } }); builder.setNegativeButton("取消", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "点击了取消----按钮", 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目录下新建一个arrays.mxl文件 final String[] strs=getResources().getStringArray(R.array.strs); //给Dialog设置单选选项。参数:1数据源 2默认选中项 3监听 builder.setSingleChoiceItems(strs, 1, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { System.out.println("===witch=="+which);// Dialog对象 whitch选中项 Toast.makeText(MainActivity.this, getResources().getStringArray(R.array.strs)[which], Toast.LENGTH_SHORT).show(); } }); //选择结束后不会自动消失对话框,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); //内容布局转换成View View view=View.inflate(MainActivity.this, R.layout.view_dialog, null); //获取Dialog内容View中的控件 final EditText etxtv1=(EditText) view.findViewById(R.id.etxtv1); final EditText etxtv2=(EditText) view.findViewById(R.id.etxtv2); builder.setView(view);//把View添加进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(); }
第六种 进度对话框
private void progressDialog() { ProgressDialog proDia=new ProgressDialog(MainActivity.this); proDia.setMessage("正在加载..."); proDia.show(); //消失对话框// proDia.dismiss(); }
第七种 水平进度对话框
private void progressHDialog() { final ProgressDialog proD=new ProgressDialog(MainActivity.this); //设置进度条的样式 proD.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); //设置进度条的最大进度 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) { //参数选择结果:年 月 日 Toast.makeText(MainActivity.this,year +":"+monthOfYear+":"+dayOfMonth, Toast.LENGTH_SHORT).show(); } }; //日期选择对话框:参数1上下文 参数2:监听器 参数...默认显示日期 实际显示的月份比这里设置的月份数会多1个月 DatePickerDialog DD=new DatePickerDialog(MainActivity.this, DL, 2015, 4, 12); //显示 DD.show(); }
第九种 时间对话框
private void TimeDialog() { OnTimeSetListener timeL=new OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { //参数:参数2选择的小时 参数3:分钟 Toast.makeText(MainActivity.this,hourOfDay +":"+minute, Toast.LENGTH_SHORT).show(); } }; //参数:参数1:上下文对象 参数2:OnTimeSetListener监听器 参数3:对话框弹出以后默认显示时间 参数5:是否是24小时 TimePickerDialog time=new TimePickerDialog(MainActivity.this, timeL, 0, 0, false); time.show(); }
一般用到的也就这九种,demo下载地址为:http://download.csdn.net/detail/xiaoxiaomao123098/9016217
版权声明:本文为博主原创文章,未经博主允许不得转载。