我有activity
和dialog
fragment
。我所做的是在显示dialog
fragment
时,用户单击外部对话框片段,以显示Alert dialog
。
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
return object: Dialog(activity!!, theme) {
override fun onTouchEvent(event: MotionEvent): Boolean {
if (MotionEvent.ACTION_OUTSIDE == event.action) {
presentAlertDialog()
return true
}
return super.onTouchEvent(event)
}
}.apply {
setCanceledOnTouchOutside(false)
setCancelable(false)
window?.apply {
setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL)
setFlags(WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH)
}
}
如果用户clicked
在activity
上没有视图,那么就没有问题了。但是,当用户单击视图(例如按钮)时,alert dialog
和该视图的onClickListener
都会被调用。我想要做的只是向alert dialog
展示,并使活动的观点忽略这种接触。有办法吗?提前感谢!
编辑:为了更清楚,我添加了一个截图:
我想要的是当用户触摸到对话框片段外部(即“等待”)和内部注册按钮(或任何其他按钮)时,我想显示一个警报对话框,并希望注册的onClickListener拒绝这种触摸。
发布于 2019-08-26 11:14:58
好吧,我想我有点理解了,你有两个对话框,当有人在第一个对话框之外点击时,你想打开另一个对话框。以下是您如何实现这一目标。
首先设置dialog.setCanceledOnTouchOutside(true);
,然后实现cancel()侦听器
dialog.setOnCancelListener(
new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
//Open another dialog here
}
});
与其自己处理onTouchEvent,不如使用它。希望这能帮助我知道是否还有任何问题。如果有时间,我可能会写一些代码。干杯!
https://stackoverflow.com/questions/57646164
复制相似问题