在alertDialog之外获取touchEvent

时间:2012-11-07 19:27:32

标签: android

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

哪里出错?当我设置标志时,我需要遵循一定的顺序吗?

0 个答案:

没有答案