他好,我也好

来源:互联网 发布:mac上ps ai怎么装字体 编辑:程序博客网 时间:2024/04/28 14:51

在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择,或者给用户提示,这个情况下方便了客户,也便利了自己,不用重复的去创建Activity,可谓“他好,我也好”。这些功能我们们叫它Android Dialog对话框,在我们使用Android的过程中,Android Dialog的类型也分好几种。


AlertDialog实现方法(建造者模式)

实例化建造者AlertDialog.Builder

利用builder设置对话框的各种属性

        setTitle(标题)

        setMessage(消息)

        setIcon(图标)

        setCancelable(boolean b)设置是否可以取消

        setPositiveButton() 设置正面按钮及点击事件

        setNegativeButton() 设置反面按钮及点击事件

        setNeutralButton() 设置中立按钮及点击事件

今天给大家介绍几种常见的Dialog


1、提示Dialog

public void alertClick(View v) {

        //创建 一个提示对话框的构造者对象

        AlertDialog.Builder builder = new AlertDialog.Builder(this);

        builder.setTitle("提示");//标题

        builder.setIcon(R.drawable.ic_launcher);//图标

        builder.setMessage("你寂寞吗?");

        builder.setCancelable(false);//能否被取消

        //正面的按钮(肯定)

        builder.setPositiveButton("是", new DialogInterface.OnClickListener() {

            @Override

            public void onClick(DialogInterface dialog, int which) {

                Toast.makeText(MainActivity.this, "那我给你介绍个妹子吧", Toast.LENGTH_SHORT).show();

                dialog.cancel();

            }

        });

        //反面的按钮(否定)

        builder.setNegativeButton("否", new DialogInterface.OnClickListener() {

            @Override

            public void onClick(DialogInterface dialog, int which) {

                Toast.makeText(MainActivity.this, "那你自己玩吧", Toast.LENGTH_SHORT).show();

                dialog.cancel();

            }

        });

        //中立的按钮

        builder.setNeutralButton("沉默", new DialogInterface.OnClickListener() {

            @Override

            public void onClick(DialogInterface dialog, int which) {

                Toast.makeText(MainActivity.this, "你到是说句话", Toast.LENGTH_SHORT).show();

                dialog.cancel();

            }

        });

        builder.show();

    }

这个提示带有一句提示消息,并带有三个按钮,实现效果如下:



2、多项单选Dialog,顾名思义就是多项里面选择一个,实现代码如下:

public void selectClick(View v){

        AlertDialog.Builder builder = new AlertDialog.Builder(this);

        builder.setTitle("请选择一位");

        builder.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {

            @Override

            public void onClick(DialogInterface dialog, int which) {

                Toast.makeText(MainActivity.this, items[which], Toast.LENGTH_SHORT).show();

            }

        });

        builder.show();

    }

效果图如下:


3、多项多选Dialog,即多项选择,实现代码如下:

public void multiClick(View v) {

        names.clear();

        AlertDialog.Builder builder = new AlertDialog.Builder(this);

        builder.setTitle("请选择");

        builder.setMultiChoiceItems(items, null, new DialogInterface.OnMultiChoiceClickListener() {

            @Override

            public void onClick(DialogInterface dialog, int which, boolean isChecked) {

                if (isChecked) {

                    names.add(items[which]);

                    Toast.makeText(MainActivity.this, items[which] + "被选中了", Toast.LENGTH_SHORT).show();

                }else{

                    names.remove(items[which]);

                    Toast.makeText(MainActivity.this, items[which] + "被取消了", Toast.LENGTH_SHORT).show();

                }

            }

        });

        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {

            @Override

            public void onClick(DialogInterface dialog, int which) {

                Toast.makeText(MainActivity.this, Arrays.toString(names.toArray()), Toast.LENGTH_SHORT).show();

                dialog.cancel();

            }

        });

        builder.show();

    }

效果如下图:


4、登录Dialog,此处需要自定义一个login_layout布局,并将其填充进去:

public void loginClick(View v){

        AlertDialog.Builder builder = new AlertDialog.Builder(this);

        builder.setIcon(R.drawable.ic_launcher);

        builder.setTitle("登录");

        final View view = getLayoutInflater().inflate(R.layout.login_layout,null);

        builder.setView(view);

        builder.setPositiveButton("登录", new DialogInterface.OnClickListener() {

            @Override

            public void onClick(DialogInterface dialog, int which) {

                EditText et_username = (EditText) view.findViewById(R.id.editText_username);

                EditText et_password = (EditText) view.findViewById(R.id.editText_password);

                String username = et_username.getText().toString();

                String password = et_password.getText().toString();

                Toast.makeText(MainActivity.this, username+"-"+password, Toast.LENGTH_SHORT).show();

                dialog.cancel();

            }

        });

        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {

            @Override

            public void onClick(DialogInterface dialog, int which) {

                dialog.cancel();

            }

        });

        builder.show();

    }

实现效果如下:


总结:当然dialog样式还有很多种,因为这个布局可以自定义,所以扩展空间无限,大家实际开发过程中根据自己需求来定义自己的dialog给用户方便也给自己方便。

0 0