Android IME 的触摸事件总是限制在 window 维度

Android IME's touch events are always limited to the window dimens

目前正在开发一个 IME (InputMethodEditor) 应用程序,因此有一个子类 InputMethodService,它会扩展一个 keyboardView。在这种情况下,它只是膨胀一个视图,它的大小与任何其他键盘应用程序相似。视图记录向下、移动和向上操作的触摸事件位置。我已将其最小化为这个,因为我正在测试移动事件中给出的触摸位置。所有位置都相对于 IME window 进行记录,但是当移动手势超出视图(在其上方)时,y 坐标不会继续并保持为零。

有没有办法在 IME 之外继续接收指针的实际坐标 window。

编辑:目的是测试来自 IME window 视图的动作移动事件是否可以传递到另一个 window 中的视图(即无缝地继续动作移动从 IME Window 到另一个)并移回 IME window。但是因为移动坐标似乎绑定到 IME window 当触摸事件超出 IME window.

时这不起作用

出于安全原因,这似乎是 IME 的一个限制特性 window,并且尚未找到解决此问题的明智方法。也没有办法用覆盖来处理这个限制,如这个答案中所述: ,不能允许触摸事件通过 window.

解决此问题的一种方法是使用 y 值为零的事实(即它已达到 IME 的最高边界 window),并继续使用触摸事件及其 x值(仍在计算),以处理任何需要的处理。

拥有候选视图也有帮助,IME window 增加其尺寸以容纳它,即使它未显示,任何底层应用程序内容将仅衡量可见输入视图。