2

我的应用程序有问题:我有一个带有 Fragment 的 FrameLayout,其中包含来自 Google Maps Android APi (v2) 的地图,以及用于在地图顶部显示各种按钮的自定义视图。

我希望在移动地图时不显示其中一些元素,为此我使用 View 的 onTouchEvent() 函数:

@Override
public boolean onTouchEvent(MotionEvent event) {
    switch (event.getActionMasked()) {
    case MotionEvent.ACTION_DOWN:
        pressed = true;
        invalidate();
        break;

    case MotionEvent.ACTION_UP:

        pressed = false;
        invalidate();
        break;
    }
    return false;
}

onDraw() 函数仅显示在地图上绘制的元素,如果pressed == false;

现在,我的问题在于返回:如果我输入 false,我说事件没有被消耗,并且 Android 操作系统在记录触摸事件时不再通知我,因此未检测到 MotionEvent.ACTION_UP 并且按钮保持不变隐。如果我设置为 true,那么这次 GoogleMap 对象将不再检测到触摸事件,并且我无法移动地图。有没有办法在不消耗第一个事件的同时继续检测所有未来的触摸事件?

4

1 回答 1

0

使用onInterceptTouchEventdispatchTouchEvent

您可以在此处阅读有关差异的信息:Android:onInterceptTouchEvent 和 dispatchTouchEvent 之间的区别?

于 2013-04-26T20:51:06.887 回答