所以这在过去的几个小时里一直困扰着我。如何让对话在外部触摸打开并捕捉外部触动?
我有一个扩展对话框,你猜对了,Dialog
。当用户点击对话框外部时,我不想关闭对话框。这很容易,因为我可以简单地使用这一行:dialog.setCanceledOnTouchOutside(false)
。但是,当用户触摸对话框之外时,我确实想要执行某些操作。该对话框不关闭也很容易(How to cancel an Dialog themed like Activity when touched outside the window?):
getWindow().setFlags(LayoutParams.FLAG_NOT_TOUCH_MODAL, LayoutParams.FLAG_NOT_TOUCH_MODAL);
getWindow().setFlags(LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);
然后实现自定义onTouchEvent(MotionEvent event)
。
但是,这不仅不会消除对话框,还会对底层的按钮等执行操作。我已经在帖子中尝试了一些其他潜在的答案(空的,在根视图上返回onTouchListener,检查对话框内是否有触摸等),但无济于事。
现在我的问题是:如何创建一个Dialog
不关闭在外面点击,也不会在底层布局/活动执行这样的按钮操作和,但不会告诉我/捕获当一个事件用户在对话框外单击?
@stealthjong是否适合你? – czajna666