对话片段和检测其外部的触摸 Window

Dialog Fragment and Detecting Touches to the Outside of Its Window

我有一个 DialogFragment,其中包含一个 ProgressBar。我想要做的是在用户点击对话框片段 window 之外时显示 AlertDialog 。在对话框片段的 onCreateView 中,我可以通过调用 setOnTouchListener 来检测对话框片段内的触摸事件以查看即将创建的内容。如何检测外部触摸?

根据另一个 Whosebug 问题的建议,我尝试设置标志:

    val dialogWindow = dialog.window
    dialogWindow?.setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL)
    dialogWindow?.setFlags(WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH)

但无法在 setOnTouchListener 中检测到触摸。

class MyDialogFragment : DialogFragment() {                   

    override fun onCreateDialog(savedInstanceState: Bundle?)  
            : Dialog {                                        

        return object : Dialog(activity, theme){              

            override fun onTouchEvent(event: MotionEvent?)    
                    : Boolean {                               
                // Here you can handle the touch event        
                return super.onTouchEvent(event)              
            }                                                 
        }                                                     
    }                                                         
}                   

也调用 setCanceledOnTouchOutside(false),因为在对话框外触摸会自动关闭它。