0

我有一个 ListView,在其中将 Google Map MapView添加到标题视图中,下面是有关如何执行此操作的代码:

vListViewTrips.addHeaderView(vMapHeaderView, null, false);

地图已显示并且可以工作,但地图在被触摸时不处理任何手势,即使所有手势都通过以下方式启用:googleMap.getUiSettings().setAllGesturesEnabled(true);

基于我所做的一些搜索,我尝试extend MapView覆盖public boolean dispatchTouchEvent(final MotionEvent motionEvent)但仍然从未调用MapView 。onTouchEvent

这是代码:

@Override
public boolean dispatchTouchEvent(final MotionEvent motionEvent) {


    ViewParent viewparent = getParent();
    switch (motionEvent.getAction()) {
        // Pressed on map: stop listview from scrolling
        case MotionEvent.ACTION_DOWN:
            viewparent.requestDisallowInterceptTouchEvent(true);
            break;

        case MotionEvent.ACTION_MOVE:
            viewparent.requestDisallowInterceptTouchEvent(true);
            break;

        // Released on map or cancelled: listview can be normal again
        case MotionEvent.ACTION_UP:
            viewparent.requestDisallowInterceptTouchEvent(false);
            break;
    }

    return super.dispatchTouchEvent(motionEvent);
}

注意我正在使用com.google.android.gms.maps.MapView

4

2 回答 2

1

尝试覆盖 MapView 子类中的 onInterceptTouchEvent() 方法:

@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
    int action = ev.getAction();
    switch (action) {
        case MotionEvent.ACTION_DOWN:
            // Disallow ScrollView to intercept touch events.
            this.getParent().requestDisallowInterceptTouchEvent(true);
            break;

        case MotionEvent.ACTION_UP:
            // Allow ScrollView to intercept touch events.
            this.getParent().requestDisallowInterceptTouchEvent(false);
            break;
    }

    return super.onInterceptTouchEvent(ev);
}
于 2017-02-25T22:58:47.353 回答
0

您是否尝试过覆盖ListView触摸方法以返回false,以便事件继续传播到视图的子项?

我的意思是创建一个自定义视图,扩展ListView,然后使用它。

于 2016-08-23T09:59:05.923 回答