Android 获取alertDialog外部的touchEvent

Android 获取alertDialog外部的touchEvent,android,Android,我有一个主视图(SurfaceView),在该视图中,我打开一个alertDialog,但没有显示某些信息的按钮。因此,alertDialog是主视图上方的一个小窗口 当用户触摸屏幕上的任何位置时,我想关闭alertDialog 到目前为止,我可以使用alertDialog中的touchEvent关闭alertDialog alterDialog或surfaceView上是否有属性 我是否可以激活surfaceView上的touchEvent侦听器,即使alertDialog正在显示 安卓2.3

我有一个主视图(SurfaceView),在该视图中,我打开一个alertDialog,但没有显示某些信息的按钮。因此,alertDialog是主视图上方的一个小窗口

当用户触摸屏幕上的任何位置时,我想关闭alertDialog

到目前为止,我可以使用alertDialog中的touchEvent关闭alertDialog

alterDialog或surfaceView上是否有属性

我是否可以激活surfaceView上的touchEvent侦听器,即使alertDialog正在显示

安卓2.3.3

我找到了有关此问题的任务的其他信息:。 现在我设置这两个标志(我的对话框不是模态): 标志不触摸模式、标志观看模式、外部触摸模式

不幸的是,在touchevent的覆盖中,当触摸对话框外部时,我从未收到外部事件MotionEvent.ACTION\u

在我的活动中,我会这样做:

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);

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

不要在主题中放置标签。您还应该重新格式化代码,{}按钮是您应该使用的,而不是引用