AlertDialog的六种创建方式

2018-10-28 23:04:24

参考地址  AlertDialog的六种创建方式


创建AlertDialog的步骤:

  1、创建AlertDialog.Builder对象

  2、调用Builder对象的setTitle方法设置标题,setIcon方法设置图标

  3、调用Builder相关方法如setMessage方法、setItems方法、setSingleChoiceItems方法、setMultiChoiceItems方法、setAdapter方法、setView方法设置不同类型的对话框内容。

  4、调用setPositiveButton、setNegativeButton、setNeutralButton设置多个按钮

  5、调用Builder对象的create()方法创建AlertDialog对象

  6、调用AlertDialog对象的show()方法将对话框显示出来

一、setMessage:设置对话框内容为简单文本内容

复制代码

    // 创建构建器
        AlertDialog.Builder builder = new AlertDialog.Builder(this);        // 设置参数
        builder.setTitle("请做出选择").setIcon(R.drawable.ic_launcher)
                .setMessage("我美不美")
                .setPositiveButton("美", new OnClickListener() {// 积极
                            @Override                            public void onClick(DialogInterface dialog,                                    int which) {                                // TODO Auto-generated method stub
                                Toast.makeText(MainActivity.this, "恭喜你答对了", 0)
                                        .show();
                            }
                        }).setNegativeButton("不美", new OnClickListener() {// 消极
                            @Override                            public void onClick(DialogInterface dialog,                                    int which) {                                // TODO Auto-generated method stub
                                Toast.makeText(MainActivity.this, "一点也不老实", 0)
                                        .show();
                            }
                        }).setNeutralButton("不知道", new OnClickListener() {// 中间级
                            @Override                            public void onClick(DialogInterface dialog,                                    int which) {                                // TODO Auto-generated method stub
                                Toast.makeText(MainActivity.this, "快睁开眼瞅瞅", 0)
                                        .show();
                            }
                        });
        builder.create().show();

复制代码

运行截图:

        

二、setItem:设置文本框内容为简单列表项

 

复制代码

    // 创建数据
        final String[] items = new String[] { "北京", "上海", "广州", "深圳" };        // 创建对话框构建器
        AlertDialog.Builder builder = new AlertDialog.Builder(this);        // 设置参数
        builder.setIcon(R.drawable.ic_launcher).setTitle("提示")
                .setItems(items, new OnClickListener() {

                    @Override                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, items[which],
                                Toast.LENGTH_SHORT).show();
                    }
                });
        builder.create().show();

复制代码

运行截图:

        

 

三、setSingleChoiceItems()设置对话框内容为单选列表项

复制代码

    // 创建数据
        final String[] items = new String[] { "北京", "上海", "广州", "深圳" };        // 创建对话框构建器
        AlertDialog.Builder builder = new AlertDialog.Builder(this);        // 设置参数
        builder.setIcon(R.drawable.ic_launcher).setTitle("提示")
                .setSingleChoiceItems(items, 0, new OnClickListener() {

                    @Override                    public void onClick(DialogInterface dialog, int which) {                        // TODO Auto-generated method stub
                        Toast.makeText(MainActivity.this, items[which],
                                Toast.LENGTH_SHORT).show();
                    }
                });
        builder.create().show();

复制代码

运行截图:

        

四、setMultiChoiceItems()设置对话框内容为多选项列表

复制代码

    // 创建数据
        final String[] items = new String[] { "北京", "上海", "广州", "深圳" };        // 创建对话框构建器
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setIcon(R.drawable.ic_launcher)
                .setTitle("提示")
                .setMultiChoiceItems(items,                        new boolean[] { true, true, false, false, false },                        new OnMultiChoiceClickListener() {

                            @Override                            public void onClick(DialogInterface dialog,                                    int which, boolean isChecked) {                                // TODO Auto-generated method stub
                                if (isChecked) {
                                    Toast.makeText(MainActivity.this,
                                            items[which], 0).show();
                                }
                            }
                        });
        builder.create().show();

复制代码

运行截图:

        

五、setAdapter()设置对话框内容为自定义列表项(这里是一个布局)

复制代码

    // 创建数据
        final String[] items = new String[] { "北京", "上海", "广州", "深圳" };        // 创建对话框构建器
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("提示")
                .setIcon(R.drawable.ic_launcher)
                .setAdapter(                        new ArrayAdapter<String>(MainActivity.this,
                                R.layout.item, R.id.tv, items),                        new OnClickListener() {

                            @Override                            public void onClick(DialogInterface dialog,                                    int which) {                                // TODO Auto-generated method stub
                                Toast.makeText(MainActivity.this, items[which],                                        0).show();
                            }
                        });
        builder.create().show();

复制代码

运行截图:

        

六、setView()设置对话框为自定义View

复制代码

    // 创建对话框构建器
        AlertDialog.Builder builder = new AlertDialog.Builder(this);        // 获取布局
        View view2 = View.inflate(MainActivity.this, R.layout.login, null);        // 获取布局中的控件
        final EditText username = (EditText) view2.findViewById(R.id.username);        final EditText password = (EditText) view2.findViewById(R.id.password);        final Button button = (Button) view2.findViewById(R.id.btn_login);        // 设置参数
        builder.setTitle("Login").setIcon(R.drawable.ic_launcher)
                .setView(view2);        // 创建对话框
        final AlertDialog alertDialog = builder.create();
        button.setOnClickListener(new View.OnClickListener() {

            @Override            public void onClick(View v) {                // TODO Auto-generated method stub
                String uname = username.getText().toString().trim();
                String psd = password.getText().toString().trim();                if (uname.equals("shenhua") && psd.equals("123456")) {
                    Toast.makeText(MainActivity.this, "登录成功", 0).show();
                }
                Toast.makeText(MainActivity.this, "登录失败", 0).show();
                alertDialog.dismiss();// 对话框消失            }

        });
        alertDialog.show();

复制代码

运行截图:

        

  • 2020-03-11 19:40:56

    java.util.zip.ZipException: zip file is empty

    三、总结 出现 java.util.zip.ZipException: zip file is empty错误,表示你本地使用的jar包或者aar包可能为空,你可以检查下文件大小,如果为空,可以替换本地的jar包或者aar包为正常的jar包或者aar包,或者如果官方有相关的资源的话直接使用官方的依赖资源即可。

  • 2020-03-11 21:22:36

    Vue的组件化之notification组件/Vue.extend()

    一、把组件的内部结构写好,写成一个vue文件notification.vue。 二、全局设置组件属性。//如果后面不需要直接引入组件的方式调用,可以不用全局注册 index.js中一般写的是需要全局设置的属性。

  • 2020-03-13 19:58:19

    推荐Android两种屏幕适配方案

    在Android开发中,由于Android碎片化严重,屏幕分辨率千奇百怪,而想要在各种分辨率的设备上显示基本一致的效果,适配成本越来越高。虽然Android官方提供了dp单位来适配,但其在各种奇怪分辨率下表现却不尽如人意,因此下面探索一种简单且低侵入的适配方式。本文将推荐两种屏幕适配方案,大家可以根据实际情况使用。

  • 2020-03-14 16:35:00

    nuxt.js部署全过程(ubuntu+nginx+node+pm2)

    系统的话本篇是Ubuntu 16.04.6 ,centos也行,大同小异都是Linux。不过如果你是初学者,最好和我使用一样的,因为因为发行版本不同而导致的差异可能导致运行某些东西失败,找问题要找好久。windows server不推荐了,企业用的多,小服务器跑windows server比较费劲。

  • 2020-03-14 23:15:25

    icomoon使用详细介绍

    此篇博文讲述如何利用icomoon导入图标,从而把自己想要的都通过icomoon方式进行,大家都知道,网站以及移动端,用图标还是尽量选择这种。因为直接用image有些图标会失真,从而也是前端开发之中,需求去掌握的一项,很简单的就几个步骤。