3

我有一个主视图(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);

错误在哪里?设置标志时是否需要遵循一定的顺序?

4

0 回答 0