我有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;
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;
}
};
我希望活动处理特定区域中的触摸事件(请参见下图中的圆圈),以便点击活动中的按钮。否则,我希望对话框处理触摸事件。
对于记录,YES,正在调用日志语句“bubbled
”,因此getActivity().dispatchTouchEvent(event)
方法显然没有按预期工作。
我注意到有时即使调用了活动中的onTouchEvent()
方法,但按钮仍然没有响应,是什么给出了?