【发布时间】:2011-04-27 09:02:36
【问题描述】:
我想通过简单地触摸屏幕来关闭我的 Android 应用程序中的对话框窗口。这可能吗?如果有,怎么做?
我已经考虑在对话框上设置一些“onClickEven”,但它不存在。
这怎么可能?
【问题讨论】:
标签: android events dialog touch
我想通过简单地触摸屏幕来关闭我的 Android 应用程序中的对话框窗口。这可能吗?如果有,怎么做?
我已经考虑在对话框上设置一些“onClickEven”,但它不存在。
这怎么可能?
【问题讨论】:
标签: android events dialog touch
您可以使用dialog.setCanceledOnTouchOutside(true);,如果您在对话框外触摸 u=,它将关闭对话框。
【讨论】:
如果您的对话框包含任何视图,请尝试在该视图中获取触摸事件,并在用户触摸该视图时关闭您的对话框。例如,如果您的对话框有任何图像,那么您的代码应该是这样的。
Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.mylayout);
//create a layout with imageview
ImageView image = (ImageView) dialog.findViewById(R.id.image);
image.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
【讨论】:
Dialog dialog = new Dialog(context)
{
public boolean dispatchTouchEvent(MotionEvent event)
{
dialog.dismiss();
return false;
}
};
你就完成了!
【讨论】:
您可以扩展Dialog 类并覆盖dispatchTouchEvent() 方法。
编辑:您也可以实现Window.Callback 接口并使用dialog.getWindow().setCallback() 将其设置为对话框的窗口回调。此实现应调用相应对话框的方法或以自己的方式处理事件。
【讨论】:
如果有人仍在寻找通过以下方式关闭对话框的解决方案 onTouch 事件,这里是一段 sn-p 代码:
public void onClick(View v) {
AlertDialog dialog = new AlertDialog(MyActivity.this){
@Override
public boolean dispatchTouchEvent(MotionEvent event)
{
dismiss();
return false;
}
};
dialog.setIcon(R.drawable.MyIcon);
dialog.setTitle("MyTitle");
dialog.setMessage("MyMessage");
dialog.setCanceledOnTouchOutside(true);
dialog.show();
}
【讨论】: