我有一个主视图(SurfaceView),我在其中打开一个不带按钮的 alertDialog 来显示一些信息。因此,alertDialog 是主视图上方的一个小窗口。
当用户触摸屏幕上的任何位置时,我想关闭 alertDialog 。
到目前为止,我可以使用 alertDialog 中的 touchEvent 关闭 alertDialog。
alterDialog 或surfaceView 上是否有属性?
即使 alertDialog 正在显示,我也可以在 surfaceView 上激活 touchEvent 侦听器吗?
安卓 2.3.3
我在这个问题上找到了有关我的任务的其他信息:dialog dismiss。现在我设置了这两个标志(我的对话框不是模态的):FLAG_NOT_TOUCH_MODAL、FLAG_WATCH_OUTSIDE_TOUCH
不幸的是,在触摸事件的覆盖中,当在对话框外触摸时,我从未收到事件 MotionEvent.ACTION_OUTSIDE。
在我的活动中,我这样做:
alertBuilder.setView(mDialogLayout);
alertDialog = alertBuilder.create();
alertDialog.setOwnerActivity(this);
后来在另一堂课上,我这样做了:
alertDialog.show();
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.copyFrom(alertDialog.getWindow().getAttributes());
lp.width = (int)(oJassSurfaceView.oCanvas.getWidth() *Constants.d_FactorResizeDialogWidth);
lp.height = (int)(oJassSurfaceView.oCanvas.getHeight() *Constants.d_FactorResizeDialogHeight);
lp.x=Constants.iX_PositionDialog;
lp.y=Constants.iY_PositionDialog;
alertDialog.getWindow().setAttributes(lp);
alertDialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
alertDialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);
错误在哪里?设置标志时是否需要遵循一定的顺序?