From 09d76854ab15b2a6f473c270da9d46e903e426da Mon Sep 17 00:00:00 2001 From: Tobrun Date: Fri, 17 Mar 2017 15:23:28 +0100 Subject: [android] - only dispatch events if not handled by MarkerView (#8447) use onTouch listener to ignore dispatching action up events to MapView when they are already handled by MarkerView. --- .../mapboxsdk/annotations/MarkerViewManager.java | 26 +++++++++++++--------- 1 file changed, 16 insertions(+), 10 deletions(-) (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewManager.java') diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewManager.java index 9a721151f7..0f1298eeaf 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewManager.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewManager.java @@ -8,6 +8,7 @@ import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.util.LongSparseArray; import android.view.LayoutInflater; +import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; @@ -503,18 +504,23 @@ public class MarkerViewManager implements MapView.OnMapChangedListener { } } - adaptedView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(final View v) { - boolean clickHandled = false; - if (onMarkerViewClickListener != null) { - clickHandled = onMarkerViewClickListener.onMarkerClick(marker, v, adapter); - } + adaptedView.setOnTouchListener(new View.OnTouchListener() { - if (!clickHandled) { - ensureInfoWindowOffset(marker); - select(marker, v, adapter); + @Override + public boolean onTouch(View v, MotionEvent event) { + if (event.getAction() == MotionEvent.ACTION_UP) { + boolean clickHandled = false; + if (onMarkerViewClickListener != null) { + clickHandled = onMarkerViewClickListener.onMarkerClick(marker, v, adapter); + markerViewContainer.setTag(true); + } + + if (!clickHandled) { + ensureInfoWindowOffset(marker); + select(marker, v, adapter); + } } + return true; } }); -- cgit v1.2.1