我有一个主视图(SurfaceView),我打开一个不带按钮的alertDialog来显示一些信息。那么alertDialog就是主视图上方的一个小窗口。
当用户触摸屏幕上的任何位置时,我想关闭alertDialog。
到目前为止,我可以使用alertDialog中的touchEvent关闭alertDialog。
alterDialog或surfaceView上是否有属性?
即使是alertDialog显示,我也可以在surfaceView上激活touchEvent监听器吗?
Android 2.3.3
我在此问题上找到了有关我的任务的其他信息:dialog dismiss。 现在我设置了这两个标志(我的对话框不是模态的): FLAG_NOT_TOUCH_MODAL,FLAG_WATCH_OUTSIDE_TOUCH
不幸的是,在touchevent的覆盖中,当在对话框外触摸时,我从未收到事件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);
哪里出错?当我设置标志时,我需要遵循一定的顺序吗?