Android触摸显示对话框

时间:2014-07-19 02:02:03

标签: android ontouchevent

我在屏幕底部添加一个按钮,当用户触摸按钮时,它会显示一个对话框。

我想要的是当用户触摸事件是action_up时,将关闭此对话框

   btn.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch(event.getAction()){
            case MotionEvent.ACTION_DOWN:
                 if (dialog != null && !dialog.isShowing()) {
                    dialog.show();
                 }
                break;
            case MotionEvent.ACTION_MOVE:
                break;
            case MotionEvent.ACTION_UP:
                if(dialog!= null && dialog.isShowing()){
                    dialog.dismiss();
                }
                break;
            }
            return true;
        }
    });

我知道该对话框已添加到顶级视图DecorView

当显示对话框时,它将涵盖其他视图

我测试此代码是否有效,触摸事件仍然传递给按钮ontouch方法

触摸事件不会被对话中断,是吗?

为什么对话框封面视图不会中断触摸事件?

1 个答案:

答案 0 :(得分:0)

触摸事件不是通过对话中断,是吗? 没错,在窗口外界触摸时,对话框会被取消。 为什么对话框封面视图不会中断触摸事件? 对话框封面视图并中断触摸事件。 测试这个尝试:

dialog.setCancelable(false);
dialog.setCanceledOnTouchOutside(false);

看一看 Dialog Class