Android Dialog的九种常用形式

来源:互联网 发布:剑网三苍爹捏脸数据 编辑:程序博客网 时间:2024/04/29 12:05

Dialog是常用的一种Android控件,一般常用的形式有九种。

第一种,最常见的普通dialog

private void nomalDialog() {//创建对话框对象:AlertDialog的内部类Builder的对象AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);//给对话框设置图标builder.setIcon(R.drawable.ic_launcher);//设置Titlebuilder.setTitle("Title");//设置对话框的信息内容builder.setMessage("是否删除选中的数据");//设置选择按钮builder.setPositiveButton("删除", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {//进行删除操作Toast.makeText(MainActivity.this, "点击了删除按钮", Toast.LENGTH_SHORT).show();}});builder.setNegativeButton("取消", new OnClickListener() {@Overridepublic 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() {@Overridepublic 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() {@Overridepublic 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() {@Overridepublic 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() {@Overridepublic void onClick(DialogInterface dialog, int which, boolean isChecked) {}}); builder.setPositiveButton("确定", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {String str="";for(int i=0;i<3;i++){if(checkedState[i])str+="true";elsestr+="false";}Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show();}}); builder.show();}

第五种 自定义布局对话框

private void mdefineDialog() {AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);//内容布局转换成ViewView 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() {@Overridepublic 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(){@Overridepublic 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() {@Overridepublic 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() {@Overridepublic 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



0 0
原创粉丝点击