AlertDialog控件的使用(android设置系统自带或自定义的提示框)

AlertDialog是设置提示框的控件,一般都是简单的提示您是否要xxxx,下面一个确定,或者取消。下面我们介绍一些系统提供的比较复杂的提示方法。还有如何自定义设置提示内容。

1.一般的提示

里面只需要自己设置提示标题,提示内容,还有点击确定时执行什么操作,点击取消时执行什么操作。很基础的应用,下面给大家演示一个是否要退出程序。

//一般提示
        Button btn1=(Button)findViewById(R.id.button0);
        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);//创建builder对象
                builder.setMessage("确认退出吗?"); //设置显示信息的内容
                builder.setTitle("提示"); //设置标题

                //设置确认按钮及其监听器
                builder.setPositiveButton("确认",  new DialogInterface.OnClickListener(){
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss(); //关闭对话框
                        MainActivity.this.finish(); //关闭Activity-->退出应用程序
                    }
                });

                //设置取消按钮及其监听器
                builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss(); //仅仅关闭对话框
                    }
                });

                //创建并显示对话框
                builder.create().show();
            }
        });

执行效果如下:

2.多按钮选择提示

一般提示有两个按钮,而这里有三个按钮,同时在这为大家展示如何加上图片,代码如下

//多按钮选择
Button btn2=(Button)findViewById(R.id.button1);
btn2.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //构建Builder对象并设置其属性,然后创建对话框
        Dialog dialog = new AlertDialog.Builder(MainActivity.this)
                .setIcon(R.drawable.zhoujielun) //设置图标,记得自己加上图片
                .setTitle("喜好调查")
                .setMessage("你喜欢周杰伦的歌吗?")
                .setPositiveButton("很喜欢", new DialogInterface.OnClickListener() { //"确认按钮"
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "我很喜欢他的歌",
                                Toast.LENGTH_LONG).show();
                    }
                })
                .setNegativeButton("不喜欢", new DialogInterface.OnClickListener() {//"取消按钮"
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "我不喜欢他的歌", Toast.LENGTH_LONG)
                                .show();
                    }
                })
                .setNeutralButton("一般", new DialogInterface.OnClickListener() {//"中性按钮"
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "谈不上喜欢不喜欢", Toast.LENGTH_LONG)
                                .show();
                    }
                }).create(); //创建对话框

        //显示对话框
        dialog.show();
    }
});

运行结果如下:

3.包含输入信息的提示

这个其实就是在里面添加了一个EditText,不过由系统提供,非常方便。代码如下:

//输入数据--在对话框中放置一个View对象
Button btn3=(Button)findViewById(R.id.button2);
btn3.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

        //动态创建一个文本框(View),用于接收用户+
        // 的输入
        final EditText info=new EditText(MainActivity.this);

        //创建并显示对话框
        new AlertDialog.Builder(MainActivity.this)
                .setTitle("请输入用户名称")
                .setIcon(android.R.drawable.ic_dialog_info) //设置系统图标(i)
                .setView(info) //设置在对话框上显示前面创建的EditText控件
                .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "用户名称: "+info.getText().toString(), Toast.LENGTH_LONG)
                                .show(); //取出输入的内容显示
                    }
                }).show();
    }
});

运行结果如下:

4.在提示内容中加入单选按钮,代码如下:

//单选按钮
Button btn4=(Button)findViewById(R.id.button3);
btn4.setOnClickListener(new View.OnClickListener() {
    //单选列表显示的内容
    final String[] info=new String[] { "Item1", "Item2","Item3" };

    @Override
    public void onClick(View v) {
        new AlertDialog.Builder(MainActivity.this)
                .setTitle("单选框")
                .setIcon(android.R.drawable.ic_dialog_info)
                .setSingleChoiceItems(  //设置单选列表格式的内容
                        info,  //单选列表内容
                        1, //默认选项,从0开始计数
                        new DialogInterface.OnClickListener() { //单选点击监听器
                            public void onClick(DialogInterface dialog, int which) {
                                Toast.makeText(MainActivity.this, "选中: "+info[which], Toast.LENGTH_LONG)
                                        .show(); //取出选中的内容显示
                                dialog.dismiss(); //关闭对话框
                            }
                        })
                .setNegativeButton("取消", null) //取消按钮,默认操作--关闭对话框
                .show(); //显示对话框
    }
});

运行结果如下:

5.在提示内容中加入复选按钮,代码如下:

//多选按钮
Button btn5=(Button)findViewById(R.id.button4);
btn5.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //多选列表
        final String[] info=new String[]{ "Item1", "Item2","Item3"};
        //列表选中情况, 此处并不能记忆上次选择情况,如需记忆,可将此处的数据移至类前面定义
        final boolean[] selected=new boolean[]{true,false,true};

        //创建并显示对话框
        new AlertDialog.Builder(MainActivity.this)
                .setTitle("复选框")
                .setMultiChoiceItems( //多选列表格式
                        info,  //多选列表内容
                        selected, //选中情况
                        new DialogInterface.OnMultiChoiceClickListener() {	 //选择情况的监听器
                            @Override
                            public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                                selected[which]=isChecked; //记录选中情况
                            }
                        })
                .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        String s="";
                        for (int i=0; i<selected.length; i++) //查出选中情况
                            if (selected[i])
                                s+=info[i]+"  ";
                        Toast.makeText(MainActivity.this, "选中: "+s, Toast.LENGTH_LONG)
                                .show(); //取出选中的内容显示
                        dialog.dismiss(); //关闭对话框
                    }
                })
                .setNegativeButton("取消", null)
                .show();
    }
});

运行结果如下:

6.列表风格的提示

//列表风格
Button btn6=(Button)findViewById(R.id.button5);
btn6.setOnClickListener(new View.OnClickListener() {
    final String[] info=new String[]{"Item1", "Item2","Item3"};
    @Override
    public void onClick(View v) {
        //创建并显示对话框
        new AlertDialog.Builder(MainActivity.this)
                .setTitle("列表框")
                .setItems(//列表格式
                        info,
                        new DialogInterface.OnClickListener() { //点击列表的监听器
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                Toast.makeText(MainActivity.this, "选中: "+info[which], Toast.LENGTH_LONG)
                                        .show(); //取出选中的内容显示
                                dialog.dismiss(); //关闭对话框
                            }
                        })
                .setNegativeButton("取消", null)
                .show();
    }
});

运行结果如下:

7,自定义的提示

这里应该注意,只有内容可以自定义,提示框名无法自己定义格式。并且按钮无法自己添加,只能能用系统提供的那三个。那我们现在看一下怎么自定义提示内容:

首先定义一个布局文件test.xml,来存放自定义的提示布局。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:background="#ffffffff"
    android:orientation="horizontal"
    android:id="@+id/dialog">
    <TextView
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:id="@+id/tvname"
        android:textColor="#ff0000"
        android:text="姓名:" />
    <EditText
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:id="@+id/etname"
        android:minWidth="100dip"/>
</LinearLayout>

然后引用这个布局文件,实现自定义布局的结果

//自定义风格
Button btn7=(Button)findViewById(R.id.button6);
btn7.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //根据布局文件动态创建对话框内的视图
        LayoutInflater inflater = getLayoutInflater();
        View layout = inflater.inflate(R.layout.test,  null);
        //不能直接在Activity中使用findViewById(),必须使用父视图查找才能成功
        final EditText et=(EditText)layout.findViewById(R.id.etname);

        //创建并显示对话框
        new AlertDialog.Builder(MainActivity.this)
                .setTitle("自定义布局")
                .setView(layout)  //设置显示内容
                .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, et.getText().toString(), Toast.LENGTH_LONG)
                                .show(); //取出选中的内容显示
                    }
                })
                .setNegativeButton("取消", null)
                .setCancelable(false)  //按回退键不可取消该对话框
                .show();
    }
});

运行结果如下:

上述所有文件的源码:https://download.csdn.net/download/qq_38367681/10793417

发布了113 篇原创文章 · 获赞 33 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_38367681/article/details/84243279