我有一个键盘视图,当手指离开键盘视图时我需要跟踪ACTION_MOVE
。问题是,一旦它出局,就会停止报告正确的Y
值,并在我的手指在键盘视图上方时保持报告最后Y
值。
为了进行调试,我只添加了一个简单的onTouchListener
,所以我知道其他服务不会以任何方式干扰触摸事件。
setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.v("YBugDebug", "getRawY() = "+ event.getRawY()+"");
return true;
}
});
我已经调试了好几天,但却找不到原因。有什么建议?我尝试了getY()
getRawY()
,将监听器附加到根视图。
奇怪的是,在Gingerbread中正确报告了Y
值,当我的ICS设备处于横向状态时。如下所述,该视图似乎不响应悬停事件。
我尝试将onTouch
添加到根视图中,但结果完全相同。它真的令人难以置信,为什么它可以检测到移动而不是正确的Y
轴。
以下是问题的解决方法:
答案 0 :(得分:0)
我不是这个领域的专家,但你是说ACTION_MOVE事件是在KeyboardView的范围之外触发的吗?
答案 1 :(得分:0)
即使在所有屏幕上进行触摸的一种方法是使用frameLayout包装整个内容,并在其上使用setOnTouchListener,同时为其onTouch()方法返回false。
我很确定我已经阅读了类似的替代方法,但我不记得它是什么。也许使用您已经拥有的视图。也许是findViewById(R.id.content)或getRootView(),但我不确定它们。