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

时间:2014-02-25 19:15:32

标签: android android-activity ontouchlistener android-dialogfragment

我有DialogFragmentonCreateDialog()看起来像

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;

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;
    }
};

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

picture

对于记录,YES,正在调用日志语句“bubbled”,因此getActivity().dispatchTouchEvent(event)方法显然没有按预期工作。

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

0 个答案:

没有答案