AlertDialog

Dialog就是一种对话框弹窗

样式

  • 默认样式

  • 单选样式

  • 多选样式

  • 自定义样式

方法:

  • setTitle:设置选项卡的标题
  • setMessage:设置提示信息,比如题干
  • setIcon:设置图标
  • setItems:设置选项列表,使用数组做参数
  • setSingleChoiceItems:设置单选选项列表,使用数组做参数
  • setMultiChoiceItems:设置多选选项列表,使用数组作为参数,可选择传入标记数组作为参数
  • 三种选项按钮
    1. setPositiveButton:
    2. setNegativeButton
    3. setNeutralButton

注意点:这里监听器里的参数i从1开始,并且顺序从最右侧到最左侧为1、2、3,与添加顺序无关。最右侧是PositiveButton,在其左边一点的是NegativeButton,最左侧是NeutralButton。

Activity.this和getApplicationContext()的区别

  1. activity.this 代表的就是当前的activity,继承context,父类当中有的方法子类中一定有,子类中有的方法父类中不一定有,在用getApplicationContext()一定能使用activity.this,但是能用activity.this不一定能使用getApplicationContext()!
  2. 在使用跟对话框相关的操作的时候必须使用activity.this不能使用getApplicationContext()

案例

package com.example.test;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;

import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

import com.example.test.util.ToastUtil;


public class DialogActivity extends AppCompatActivity {
    private Button btnDialog1,btnDialog2,btnDialog3,btnDialog4,btnDialog5;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dialog);
        btnDialog1 = findViewById(R.id.btn_dialog1);
        btnDialog2 = findViewById(R.id.btn_dialog2);
        btnDialog3 = findViewById(R.id.btn_dialog3);
        btnDialog4 = findViewById(R.id.btn_dialog4);
        btnDialog5 = findViewById(R.id.btn_dialog5);
        Onclick onclick = new Onclick();
        btnDialog1.setOnClickListener(onclick);
        btnDialog2.setOnClickListener(onclick);
        btnDialog3.setOnClickListener(onclick);
        btnDialog4.setOnClickListener(onclick);
        btnDialog5.setOnClickListener(onclick);
    }
    private class Onclick implements OnClickListener {
        @Override
        public void onClick(View view) {
            Intent intent = null;
            switch (view.getId()){
                case R.id.btn_dialog1:
                    //建造者模式
                    AlertDialog.Builder builder = new AlertDialog.Builder(DialogActivity.this);
                   /* builder.setTitle("请回答");
                    builder.setMessage("1+1=?");*/
                   //设置标题,设置消息,设置图标
                    //这里监听器里的参数i从1开始,并且顺序从最右侧到最左侧为1、2、3,与添加顺序无关。最右侧是PositiveButton,在其左边一点的是NegativeButton,最左侧是NeutralButton
                    builder.setTitle("请回答").setMessage("你觉得我长得怎么样").setIcon(R.drawable.checked)
                            //设置一个积极的按钮
                            .setPositiveButton("好看", new DialogInterface.OnClickListener(){
                                @Override
                                public void onClick(DialogInterface dialogInterface, int i) {
                                    ToastUtil.showMsg(DialogActivity.this,"真会说话~~ 位置i:"+i);
                                }
                                //一个中性的按钮
                            }).setNeutralButton("我不知道", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            ToastUtil.showMsg(DialogActivity.this,"你再瞅瞅位置i:"+i);
                        }
                        //一个消极的按钮
                    }).setNegativeButton("不好看", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            ToastUtil.showMsg(DialogActivity.this,"去屎吧你位置i:"+i);
                        }
                    }).show();
                    break;
                case R.id.btn_dialog2:
                    //单选
                    String[] gender2 = {"man","women"};
                    AlertDialog.Builder builder2 = new AlertDialog.Builder(DialogActivity.this);
                    builder2.setTitle("选择性别" ).setItems(gender2, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            //i是从0开始,可以对应数组下标
                            ToastUtil.showMsg(DialogActivity.this,gender2[i]+i);
                        }
                    }).show();
                    break;
                case R.id.btn_dialog3:
                    String[] gender3 = {"man","women"};
                    AlertDialog.Builder builder3 = new AlertDialog.Builder(DialogActivity.this);
                    builder3.setTitle("选择性别").setSingleChoiceItems(gender3, 0, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            ToastUtil.showMsg(DialogActivity.this,gender3[i]);
                            //点击选项时选择框消失
                            dialogInterface.dismiss();
                        }
                        //设置点击选择框外面区域选择框不会消失
                    }).setCancelable(false).show();
                    break;
                case R.id.btn_dialog4:
                    //多项选择
                    String[] hobby = {"唱","跳","rap","打篮球"};
                    //这是一个标记数组,用来标记上面数组对应位置是否选中
                    boolean[] flag = {false,false,true,false};
                    AlertDialog.Builder builder4 = new AlertDialog.Builder(DialogActivity.this);
                    builder4.setTitle("选择兴趣").setMultiChoiceItems(hobby, flag, new DialogInterface.OnMultiChoiceClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i, boolean b) {
                            ToastUtil.showMsg(DialogActivity.this,hobby[i]+":"+b);
                        }
                    }).setPositiveButton("确定", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            ToastUtil.showMsg(DialogActivity.this,"干些确定之后应该处理的事");
                        }
                    }).setNegativeButton("取消", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            ToastUtil.showMsg(DialogActivity.this,"干些取消之后应该处理的事");

                        }
                    }).show();
                    break;
                case R.id.btn_dialog5:
                    AlertDialog.Builder builder5 = new AlertDialog.Builder(DialogActivity.this);
                    View v = LayoutInflater.from(DialogActivity.this).inflate(R.layout.layout_dialog,null);
                    EditText username = v.findViewById(R.id.et_username);
                    EditText password = v.findViewById(R.id.et_password);
                    Button login = v.findViewById(R.id.btn_login);
                    login.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            ToastUtil.showMsg(DialogActivity.this,"登录成功");
                        }
                    });
                    builder5.setTitle("请登录").setView(v).show();
                    break;
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值