Android:触摸时关闭对话框窗口

时间:2011-04-27 09:02:36

标签: android events dialog touch

我想通过简单地触摸屏幕关闭我的Android应用程序中的对话框窗口..这可能吗?如果是这样,怎么样?

我已经研究过在对话框中设置一些“onClickEven”,但它并不存在。

这怎么可能?

5 个答案:

答案 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();

        }