Dialog概述

Dialog基本要素:标题、消息、按钮

一、普通Dialog:
主要有:AlertDialog,
ProgressDialog,
TimePickerDialog,
CustomDialog(自定义)

1、创建方式
1).AlertDialog
创建AlertDialog,需要用AlertDialog.Builder
AlertDialog.Builder builder = new AlertDialog.Builder(this);
2).ProgressDialog 直接new即可 :ProgressDialog pd = new ProgressDialog(this);
3).DatePickerDialog :
构造方法两个参数:
第一个参数为上下文;
第二个参数是一个监听器OnDateSetListener,需要重写onDateSet方法;
4).TimePickerDialog:
构造方法两个参数:
第一个参数为上下文;
第二个参数是一个监听器OnTimeSetListener,需要重写onTimeSet方法;
5). CustomDialog自定义的Dialog:

AlertDialog.Builder builder2 = new AlertDialog.Builder(this);
            //通过布局填充器动态获取布局
            View loginView = getLayoutInflater().inflate(R.layout.dialog_login, null, false);
            final EditText editName = (EditText) loginView.findViewById(R.id.editName);

            builder2.setView(loginView);
            builder2.setNegativeButton("取消", null);
            builder2.setPositiveButton("确定", new OnClickListener() {
                //此处的which只有一个值1,就是选中该按钮
                public void onClick(DialogInterface dialog, int which) {
                }
            });

2.各种基本要素的设置:
Dialog概述_第1张图片
①可以设置Dialog的icon
builder.setIcon(R.drawable.ic_launcher);
②可以设置Dialog的title
builder.setTitle(“退出:”);
③可以设置Dialog的message
builder.setMessage(“你确定要离开吗?”);

3.设置点击事件

//当NegativeButton时,第二个参数是一个监听用于引导下一步操作,
//取消的下一步就是退出对话框,而系统默认此时任何点击都退出对话框,故直接设为null即可
            builder.setNegativeButton("取消", null);
            builder.setPositiveButton("确定", new OnClickListener() {

                public void onClick(DialogInterface dialog, int which) {
                    //销毁一个进程用finish方法
                    finish();
                }
            });
            builder.show();//该方法等价于builder.create.show();

二、列表Dialog:
普通列表 Builder.setItems
单选 Builder.setSingleChoiceItems
多选 Builder.setMultiChoiceItems
适配器 Builder.setAdapter
全部都是使用AlertDialog.Builder创建

例子1:单选 Builder.setSingleChoiceItems

AlertDialog.Builder builder2 = new AlertDialog.Builder(this);
            builder2.setIcon(R.drawable.ic_launcher);
            builder2.setTitle("设置字体大小");
            //第一个参数:数据源;此处R.array.arrSizes为xml中存储的字号的数组。
            //第二个参数:数组下标:此处-1即不默认选中数组中的字号;
            //第三个参数:Listener监听器
            builder2.setSingleChoiceItems(R.array.arrSizes, -1, new OnClickListener() {
                //which代表被选中的item的位置
                public void onClick(DialogInterface dialog, int which) {
                    //此处的position设置的int型全局变量,用于记录被选中的item,本质上即arrSizes数组下标
                    position = which;
                    //此处仅仅记录了位置,至于选中Item的后续操作应在用户确认提交该选择的时候才去完成,
                    //即在setPositiveButton才完成
                }
            });
            builder2.setNegativeButton("取消", null);
            builder2.setPositiveButton("确定", new OnClickListener() {

                public void onClick(DialogInterface dialog, int which) {
                    switch (position) {
                    //对应下标的dp值,然后设置text.setTextSize(20);
                    case 0:
                        text.setTextSize(20);
                        break;
                    case 1:
                        text.setTextSize(30);
                        break;
                    case 2:
                        text.setTextSize(50);
                        break;
                    }
                }
            });

//例子2.多选 Builder.setMultiChoiceItems 
            final String[] strHobbies = getResources().getStringArray(R.array.arrHobbies);
            final boolean[] checkedPosition = new boolean[strHobbies.length];
            //此处的boolean数组跟选项数组一一对应,为了判断该选项是否被选中,先定义长度。
            AlertDialog.Builder builder3 = new AlertDialog.Builder(this);
            builder3.setIcon(R.drawable.ic_launcher);
            builder3.setTitle("选择兴趣爱好");
            builder3.setMultiChoiceItems(R.array.arrHobbies, null, new OnMultiChoiceClickListener() {

                public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                    checkedPosition[which] = isChecked;//已知boolean数组默认false,该操作为数组赋值。
                }
            });
            builder3.setNegativeButton("取消", null);
            builder3.setPositiveButton("确定", new OnClickListener() {

                public void onClick(DialogInterface dialog, int which) {
                    StringBuilder sb = new StringBuilder();
                    for(int i = 0; i < checkedPosition.length; i++){
                        if (checkedPosition[i]) {
                            sb.append(strHobbies[i]).append(",");
                        }
                    }
                    textView.setText(sb.toString());
                }
            });

你可能感兴趣的:(dialog,builder,item)