53、安卓Dialog大全

一. AlertDialog

转载:https://www.cnblogs.com/shen-hua/p/5709663.html

注:

AlertDialog直接用builder.show()和builder.creat().show()这样写有什么不同?

显示AlertDialog的时候直接用

1

2

3

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

...

builder.show();

和使用

1

2

3

4

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

...

AlertDialog alert = builder.create();

alert.show()

他俩是一样的,第一种的show方法会先调用create然后再show。

但是在引入布局的情况下,最好用第二种,因为涉及到dialog的dimiss,第一种得不到AlertDialog的引用,可能无法在Activity结束前销毁对话框,就会报一个view泄露的错误

 

1、简单对话框

       // 创建构建器
        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();     
                                               dialog.dismiss();
                                       
                            }
                }).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();

2、列表式对话框 

       // 创建数据
        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();

 

3、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();

 

4、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();

 

5、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();

 

6、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();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值