summaryrefslogtreecommitdiff
path: root/platform
diff options
context:
space:
mode:
authorTobrun <tobrun@mapbox.com>2017-03-17 15:23:28 +0100
committerGitHub <noreply@github.com>2017-03-17 15:23:28 +0100
commit09d76854ab15b2a6f473c270da9d46e903e426da (patch)
tree9128297edb9506e87cdad61612c8c377edd3655d /platform
parent2e6c0263d8455f08ab8c421597190a972dad8dae (diff)
downloadqtlocation-mapboxgl-09d76854ab15b2a6f473c270da9d46e903e426da.tar.gz
[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.
Diffstat (limited to 'platform')
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewContainer.java10
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewManager.java26
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/MarkerViewActivity.java7
3 files changed, 30 insertions, 13 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewContainer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewContainer.java
index 1f206b71ca..d590582f09 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewContainer.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewContainer.java
@@ -17,14 +17,18 @@ public class MarkerViewContainer extends FrameLayout {
public MarkerViewContainer(Context context, AttributeSet attrs) {
super(context, attrs);
+ setTag(false);
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
- final boolean childResult = super.dispatchTouchEvent(ev);
- if (childResult) {
+ super.dispatchTouchEvent(ev);
+ boolean actionUp = (boolean) getTag();
+ if (!actionUp) {
((ViewGroup) getParent()).onTouchEvent(ev);
+ } else {
+ setTag(false);
}
- return childResult;
+ return true;
}
}
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;
}
});
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/MarkerViewActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/MarkerViewActivity.java
index f2f82865d1..b8a008e592 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/MarkerViewActivity.java
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/MarkerViewActivity.java
@@ -196,6 +196,13 @@ public class MarkerViewActivity extends AppCompatActivity {
// open infowindow offscreen markers
mapboxMap.selectMarker(markerRightOffScreen);
mapboxMap.selectMarker(markerRightBottomOffScreen);
+
+ mapboxMap.setOnMapClickListener(new MapboxMap.OnMapClickListener() {
+ @Override
+ public void onMapClick(@NonNull LatLng point) {
+ Toast.makeText(MarkerViewActivity.this, point.toString(), Toast.LENGTH_SHORT).show();
+ }
+ });
}
});
}