对话片段和检测其外部的触摸 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)
,因为在对话框外触摸会自动关闭它。
我有一个 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)
,因为在对话框外触摸会自动关闭它。