我想通过简单地触摸屏幕关闭我的Android应用程序中的对话框窗口..这可能吗?如果是这样,怎么样?
我已经研究过在对话框中设置一些“onClickEven”,但它并不存在。
这怎么可能?
答案 0 :(得分:32)
如果在对话框外触摸u =,则可以使用dialog.setCanceledOnTouchOutside(true);
关闭对话框。
答案 1 :(得分:14)
如果您的对话框包含任何视图,请尝试在该视图中获取触摸事件,并在用户触摸该视图时关闭对话框。例如,如果您的对话框中有任何图像,那么您的代码应该是这样的。
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();
答案 2 :(得分:7)
Dialog dialog = new Dialog(context)
{
public boolean dispatchTouchEvent(MotionEvent event)
{
dialog.dismiss();
return false;
}
};
你完成了!
答案 3 :(得分:1)
您可以扩展Dialog
类并覆盖dispatchTouchEvent()
方法。
编辑:您还可以使用Window.Callback
实现dialog.getWindow().setCallback()
界面并将其设置为对话框的窗口回调。此实现应调用相应的对话框方法或以自己的方式处理事件。
答案 4 :(得分:1)
如果有人仍在搜索解除对话的解决方案 onTouch事件,这是一段代码:
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();
}