重写AlertDialog实现自定义的对话框

 实现自定义的对话框可以直接通过set方法传入XML布局,但是显得代码过于臃肿,所以下面的方法是继承了AlertDialog类,自己定义一个类,这种方法更方便。

继承了AlertDialog重写其中的onCreate,onClick方法,改写为自己的逻辑。

public class CustomDialog extends AlertDialog implements View.OnClickListener {
    Context mContext;
    private EditText editText;
    private Button mBtnCancel, mBtnConfirm;

    public CustomDialog(Context context) {
        super(context);
        mContext = context;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        //指定为自己的布局
        setContentView(R.layout.add_group);
        editText = findViewById(R.id.edit_new_group);
        mBtnCancel = findViewById(R.id.btn_cancel);
        mBtnConfirm = findViewById(R.id.btn_confirm);
        mBtnCancel.setOnClickListener(this);
        mBtnConfirm.setOnClickListener(this);
        Window window = this.getWindow();
        window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));// 有白色背景,加这句代码
        //保证EditText能弹出键盘
        this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
        this.setCancelable(false);
    }

    @Override
    public void onClick(View view) {
        //设置弹出Dialog的相应事件
        switch (view.getId()) {
            case R.id.btn_cancel:
                this.dismiss();
                break;
            case R.id.btn_confirm:
                if (TextUtils.isEmpty(editText.getText())) {
                    Toast.makeText(mContext, "不能为空", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(mContext, editText.getText().toString(), Toast.LENGTH_SHORT).show();
                    NoteGroup group = new NoteGroup();
                    group.setCreateTime(CommonUtil.date2string(new Date()));
                    group.setUpdateTime(group.getCreateTime());
                    group.setName(editText.getText().toString());
                    NoteGroupLitepal.createNewGroup(group);
                    this.dismiss();
                }
                break;
            default:
                break;
        }
    }

xml布局




    

        

        

            
        

        

            

效果: 

重写AlertDialog实现自定义的对话框_第1张图片

你可能感兴趣的:(Android)