Dialog点击屏幕其他地方消失的事件

在程序中显示一个Dialog是经常的事情,有些需求就是在dialog消失的时候捕捉到它的事件改变一些变量的值。比如我已经显示了一个dialog,第二个事件来了,得先判断当前是不是已经显示了一个dialog,如果没有显示我再显示,已经显示了我就不再显示了。由此监控dialog消失的事件就很必要了。我们知道dialog有三种方法消失,一种是返回键(不做解释),一种是点击dialog消失(不做解释),还有一种就是点击dialog以外的地方消失。
我暂时只记录第三种,前面两种很容易,至于第三种,其实想通了也很简单,就是绑定dialog的OnDisMissListener()事件
下面附上代码

    cardDialogView2.setOnDismissListener(new DialogInterface.OnDismissListener() {
            @Override
            public void onDismiss(DialogInterface dialog) {
                cardDialogView2.hideView();
            }
        });

好了,就是这么简单。

Android中,你可以创建一个带有点击事件监听器的Dialog,并通过重写OnClickListener的onClick方法来实现这种效果。通常,我们会自定义一个DialogFragment或者AlertDialog,并在它的构建器中设置一个透明的背景,以便于点击穿透。以下是简单的步骤: 1. 首先,创建一个带有一个ImageView或者ViewGroup用于显示不同图片的布局作为Dialog的内容。 ```java private View.OnClickListener dialogClickListener = new View.OnClickListener() { private int currentImageIndex = 0; @Override public void onClick(View v) { if (v.getId() == android.R.id.content) { // 如果点击的是Dialog内容区域 currentImageIndex = (currentImageIndex + 1) % images.length; // 图片索引循环 ((ImageView) v).setImageResource(images[currentImageIndex]); // 设置新的图片 } else { // 如果点击了关闭按钮或其他非透明区域,关闭Dialog dismiss(); } } }; ``` 2. 在DialogFragment的onCreateDialog方法里,创建并配置这个Dialog,并添加点击监听器: ```java @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); View dialogView = LayoutInflater.from(getActivity()).inflate(R.layout.dialog_custom, null); builder.setView(dialogView); // 添加点击事件Dialog内容区域 dialogView.findViewById(android.R.id.content).setOnClickListener(dialogClickListener); return builder.create(); } ``` 注意:`images`是一个包含了不同图片资源ID的数组,你需要根据实际项目替换它。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值