0

Google マップのMapViewをヘッダー ビューに追加する ListView があります。以下は、その方法に関するコードです。

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を返すために touch メソッドをオーバーライドしようとしましたか?false

つまり、カスタム ビューを作成し、 を拡張ListViewして代わりに使用するということです。

于 2016-08-23T09:59:05.923 に答える