ACTION_MOVE未报告正确的Y值

时间:2013-02-17 12:08:26

标签: java android view keyboard touch

我有一个键盘视图,当手指离开键盘视图时我需要跟踪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轴。

以下是问题的解决方法:

http://oi48.tinypic.com/ehnfqp.jpg

2 个答案:

答案 0 :(得分:0)

我不是这个领域的专家,但你是说ACTION_MOVE事件是在KeyboardView的范围之外触发​​的吗?

答案 1 :(得分:0)

即使在所有屏幕上进行触摸的一种方法是使用frameLayout包装整个内容,并在其上使用setOnTouchListener,同时为其onTouch()方法返回false。

我很确定我已经阅读了类似的替代方法,但我不记得它是什么。也许使用您已经拥有的视图。也许是findViewById(R.id.content)或getRootView(),但我不确定它们。