Activity 的对话片段和取消触摸
Dialog Fragment and Dismissing Touches to Activity's Views
我有一个 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
没有视图,则没有问题。但是,当用户单击时有一个视图(例如 button )时, alert dialog
和该视图的 onClickListener
都会被调用。我想做的只是显示 alert dialog
并使 activity 的视图忽略该触摸。有办法吗?提前致谢!
编辑:为了更清楚,我添加了一个屏幕截图:
我想要的是当用户触摸对话框片段外部(即 "Waiting" )和注册按钮(或任何其他)内部时,我想显示一个警告对话框并希望关闭注册的 onClickListener那一抹。
好吧,我想我有点理解你有两个对话框,当有人在第一个对话框之外单击时你想打开另一个。这是实现此目标的方法。
先设置dialog.setCanceledOnTouchOutside(true);
然后实现cancel()监听器
dialog.setOnCancelListener(
new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
//Open another dialog here
}
});
最好使用它而不是自己处理 onTouchEvent。希望这有助于让我知道是否还有任何问题。如果有时间,我可能会写一些代码。干杯!
我有一个 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
没有视图,则没有问题。但是,当用户单击时有一个视图(例如 button )时, alert dialog
和该视图的 onClickListener
都会被调用。我想做的只是显示 alert dialog
并使 activity 的视图忽略该触摸。有办法吗?提前致谢!
编辑:为了更清楚,我添加了一个屏幕截图:
我想要的是当用户触摸对话框片段外部(即 "Waiting" )和注册按钮(或任何其他)内部时,我想显示一个警告对话框并希望关闭注册的 onClickListener那一抹。
好吧,我想我有点理解你有两个对话框,当有人在第一个对话框之外单击时你想打开另一个。这是实现此目标的方法。
先设置dialog.setCanceledOnTouchOutside(true);
然后实现cancel()监听器
dialog.setOnCancelListener(
new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
//Open another dialog here
}
});
最好使用它而不是自己处理 onTouchEvent。希望这有助于让我知道是否还有任何问题。如果有时间,我可能会写一些代码。干杯!