Android基础之Dialog

通用属性设置

  • 设置对话框的标题内容等
       //创建对话框,使用对话框构建器AlertDialog.Builder
        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        //设置标题
        builder.setTitle("标题");
        //设置对话框的图标
        builder.setIcon(R.drawable.header);
        //设置内容
        builder.setMessage("内容");
  • 设置确定取消按钮
       //设置确定按钮
        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
            }
        });
        //设置取消按钮
        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
            }
        });
  • 设置对话框显示与隐藏
        dialog = builder.create();
        //显示对话框
        dialog.show();
        //隐藏对话框
        dialog.dismiss();
  • 设置点击按钮后不关闭对话框
Field field = dialog.getClass().getSuperclass()
            .getDeclaredField("mShowing");
        field.setAccessible(true);
        //设置Dialog显示/不显示
        field.set(dialog, true/false);

单选对话框

        //不能设置内容,否则单选效果无法展示
        //builder.setMessage("内容");
        //设置单选按钮
        String items1[] = new String[] { "魏", "蜀", "吴" };
        builder.setSingleChoiceItems(items1, 1, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                Toast.makeText(Main3Activity.this,which+"",Toast.LENGTH_LONG).show();
            }
        });

多选对话框

        String ITEM_ID2[] = new String[]{"魏", "蜀", "吴"};
        boolean checkedItems[] = {true, false, true};
        builder.setMultiChoiceItems(ITEM_ID2, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which,
                                boolean isChecked) {
                // TODO Auto-generated method stub
            }
        });

进度对话框

**在Android8.0以后使用ProgressBar代替progressDialog**

自定义view的对话框

        View view = View.inflate(Main3Activity.this, R.layout.item_dialog, null);
        final AlertDialog.Builder dialog = new AlertDialog.Builder(Main3Activity.this);
        dialog.setTitle("用户登录:")
                .setIcon(R.mipmap.ic_launcher)
                .setView(view)
                .setPositiveButton("ok", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Toast.makeText(getApplicationContext(), "登录成功", Toast.LENGTH_SHORT).show();
                    }
                })

自定义view和位置的对话框

        View view = View.inflate(Main3Activity.this, R.layout.item_dialog, null);
        Dialog dialog = new Dialog(Main3Activity.this);
        //R.layout 后面跟的文件就是加载的自定义布局
        dialog.setContentView(view);
        Window mWindow = dialog.getWindow();
        mWindow.setGravity(Gravity.LEFT + Gravity.TOP);
        WindowManager.LayoutParams lp = mWindow.getAttributes();
        lp.x = 0;
        lp.y = 0;
        lp.width = ViewGroup.LayoutParams.MATCH_PARENT;
        lp.height = ViewGroup.LayoutParams.MATCH_PARENT;
        mWindow.setAttributes(lp);
        dialog.create();
        dialog.show();

日期和时间对话框

            //日期对话框
            DatePickerDialog dialog_date = new DatePickerDialog(MainActivity.this);
                dialog_date.setTitle("选择日期:");
                dialog_date.setIcon(R.mipmap.ic_launcher);
                dialog_date.setOnDateSetListener(new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
                    Toast.makeText(getApplicationContext(), i + "    " + i1 + "      " + i2, Toast.LENGTH_SHORT).show();
                    }
                });
                dialog_date.create();
                dialog_date.show();
            //时间对话框(时。分)
            TimePickerDialog dialog_date = new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {
                    @Override
                    public void onTimeSet(TimePicker timePicker, int i, int i1) {
                    Toast.makeText(getApplicationContext(), i + "    " + i1, Toast.LENGTH_SHORT).show();
                    }
                }, 18, 06, true);
                dialog_date.create();
                dialog_date.show();
  • 布局和代码中使用
    1,布局中:
      <DatePicker
            android:layout_width="wrap_content"
            android:id="@+id/dp"
            android:layout_height="wrap_content">
        </DatePicker>
        <TimePicker
            android:layout_width="wrap_content"
            android:id="@+id/tp"
            android:layout_height="wrap_content">
        </TimePicker>
2,代码中:
          //设置年月日监听器
          dp.init(dp.getYear(), dp.getMonth(), dp.getDayOfMonth(), new DatePicker.OnDateChangedListener() {
            @Override
            public void onDateChanged(DatePicker datePicker, int i, int i1, int i2) {
            tv.setText("当前时间:"+ dp.getYear()+"-"+dp.getMonth()+"-"+dp.getDayOfMonth()+"  "+tp.getHour()+":"+tp.getMinute());
            }
        });
        //设置时分监听器
        tp.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
            @Override
            public void onTimeChanged(TimePicker timePicker, int i, int i1) {
            tv.setText("当前时间:"+ dp.getYear()+"-"+dp.getMonth()+"-"+dp.getDayOfMonth()+"  "+tp.getHour()+":"+tp.getMinute());
            }
        });
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值