【发布时间】:2014-02-14 15:29:00
【问题描述】:
所以这在过去的几个小时里一直困扰着我。
我有一个扩展的对话框,你猜对了,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,它不会在外部点击时关闭,也不会对底层布局/活动的按钮等执行操作,但会通知我/捕获一个用户在对话框外点击时的事件?
【问题讨论】: