当前位置: 代码迷 >> Android >> Android Dialog的九种惯用形式
  详细解决方案

Android Dialog的九种惯用形式

热度:92   发布时间:2016-04-27 23:25:50.0
Android Dialog的九种常用形式

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



版权声明:本文为博主原创文章,未经博主允许不得转载。

  相关解决方案