检测点击Android中的对话窗口

Ste*_*hev 5 android dialog click

我有一个对话框:

final Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.location_dialog);
dialog.setTitle("My dialog");
dialog.setMessage("My dialog's content");
dialog.setCancelable(true);
dialog.setCanceledOnTouchOutside(true);
dialog.show();
Run Code Online (Sandbox Code Playgroud)

我希望能够检测对话框行外的触摸.我可以使用内置方法轻松检测对话框区域外的任何触摸

dialog.setCanceledOnTouchOutside(true);
Run Code Online (Sandbox Code Playgroud)

但是如何检测这个区域内的触摸? 仅在红色区域检测触摸.

Fla*_*vio 8

创建Dialog的扩展并覆盖必要的方法:dispatchTouchEventonTouchEvent(来自docs:这对于处理窗口边界外发生的触摸事件非常有用,其中没有视图可以接收它.)

更新:

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    Rect dialogBounds = new Rect();
    getWindow().getDecorView().getHitRect(dialogBounds);

    if (dialogBounds.contains((int) ev.getX(), (int) ev.getY())) {
        Log.d("test", "inside");
    } else {
        Log.d("test", "outside");
    }
    return super.dispatchTouchEvent(ev);
}
Run Code Online (Sandbox Code Playgroud)