我有一个视图,有时会被PopupWindow遮挡,其显示是通过触摸视图触发的。发生这种情况时,我想立即将触摸事件流传输到PopupWindow。我不能只在相同的层次结构中覆盖一个视图,因为这发生在IME中,覆盖了我需要捕获手势的屏幕区域的一小部分。
我已经尝试向View的根容器发送ACTION_CANCEL并将我自己的ACTION_DOWN MotionEvent分派给Popwindow。我也试过覆盖底部Window的根dispatchTouchEvent和dispatchGenericPointerEvent方法什么也不做,并在弹出窗口处于活动状态时返回false。这些方法都不奏效。
如果我在PopupWindow出现后轻轻抬起手指并再次将其放下,显然我收到触摸事件没问题。我需要了解当我这样做时会发生什么,使我的原始窗口放弃触摸焦点并重置其调度状态。在我的PopupWindow内容视图出现时以及在我抬起手指之前调用requestFocusFromTouch返回false。
我非常乐意在必要时进行子类化和覆盖,因为我可以完全控制所涉及的所有组件。