我在屏幕底部添加一个按钮,当用户触摸按钮时,它会显示一个对话框。
我想要的是当用户触摸事件是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方法
触摸事件不会被对话中断,是吗?
为什么对话框封面视图不会中断触摸事件?
答案 0 :(得分:0)
触摸事件不是通过对话中断,是吗? 没错,在窗口外界触摸时,对话框会被取消。 为什么对话框封面视图不会中断触摸事件? 对话框封面视图并中断触摸事件。 测试这个尝试:
dialog.setCancelable(false);
dialog.setCanceledOnTouchOutside(false);
看一看 Dialog Class