android中AlertDialog.Builder自定义Dialog设置点击关闭


首先是xml文件中的样式

需求是点击“我再想想”,关闭dialog提示框

查看代码
<?xml version="1.0" encoding="utf-8"?>


    
    

    

通过android.app. AlertDialog.Builder builder = new AlertDialog.Builder(this);显示对话框,是没有对相应的方法关闭对话框的

但是AlertDialog.Builder的父类有cancel()和dismiss()方法关闭对话框

用父类创建子类对象即可使用父类的方法

AlertDialog TipsD = new AlertDialog.Builder(this,R.style.tips_dialog).setView(view).show();
package com.ltj.myapplication;

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.widget.Button;
import android.widget.TextView;

public class DialogActivity9 extends AppCompatActivity {
    Button mBtnTips,mBtnProgress;
    Intent intent=null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dialog9);

        mBtnTips=findViewById(R.id.btn_tips);
        mBtnProgress=findViewById(R.id.btn_pg);

        mBtnTips.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                TipsDialog();
            }
        });
    }

    private void TipsDialog() {
        View view = LayoutInflater.from(this).inflate(R.layout.layout_tips, null, false);
        Button mBtnTipsOk=view.findViewById(R.id.btn_start);
        TextView tvThink=view.findViewById(R.id.tv_think);
        AlertDialog TipsD = new AlertDialog.Builder(this,R.style.tips_dialog).setView(view).show();

//        TipsD.setNegativeButton("我再想想", new DialogInterface.OnClickListener() {
//            @Override
//            public void onClick(DialogInterface dialogInterface, int i) {
//
//            }
//        }).show();

        mBtnTipsOk.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                intent =new Intent(DialogActivity9.this,ButtonActivity.class);
                startActivity(intent);
            }
        });

        tvThink.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                TipsD.cancel();

            }
        });
    }

}