当对话框显示时,Android会向主要活动发送触摸事件

rpe*_*yng 8 android ontouchlistener android-activity android-dialogfragment

我有一个DialogFragment,它onCreateDialog()看起来像

Dialog dialog = new Dialog(getActivity(), R.style.Theme_Translucent_NoTitleBar);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(parentView);
dialog.getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.R.color.transparent));

parentView.setOnTouchListener(onTouchListener);
return dialog;
Run Code Online (Sandbox Code Playgroud)

onTouchListener看起来像

private OnTouchListener onTouchListener = new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        Bundle bundle = getArguments();
        int[] coordinates = bundle.getIntArray(COORDINATES);
        int radius = bundle.getInt(RADIUS);

        float x = event.getX();
        float y = event.getY();

        Log.d(TAG, "called touch");

        if (Math.pow(x - coordinates[0], 2) + Math.pow((y - coordinates[1]), 2) < Math.pow(
                radius, 2)) {
            getActivity().dispatchTouchEvent(event);
            Log.d(TAG, "bubbled");
        }
        return false;
    }
};
Run Code Online (Sandbox Code Playgroud)

我希望活动处理特定区域中的触摸事件(参见下图中的圆圈),以便点击活动中的按钮.否则,我希望对话框处理触摸事件.

图片

对于记录,YES,bubbled正在调用Log语句" ",所以很明显该getActivity().dispatchTouchEvent(event)方法没有按预期工作.

我注意到有时甚至onTouchEvent()调用活动中的方法,但按钮仍然没有响应,是什么给出的?