From 3dcbbb143fe2eaeb33fb4193d6b0c48be83076ac Mon Sep 17 00:00:00 2001 From: Chris Banes Date: Wed, 30 Nov 2016 01:42:03 +0000 Subject: [PATCH] am e274607c: am cae51694: Merge "Ensure that SwipeDismissBehavior affects the correct view" into mnc-ub-dev * commit 'e274607cdee3deb8f2f15a6bbdaf6051dd6fa6bc': Ensure that SwipeDismissBehavior affects the correct view GitOrigin-RevId=9d6eb9beafef317f0f1bc5596ab47114c161f41a PiperOrigin-RevId: 140551102 --- api/current.txt | 1 + .../support/design/widget/Snackbar.java | 5 +++++ .../design/widget/SwipeDismissBehavior.java | 19 +++++++++++++++++-- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/api/current.txt b/api/current.txt index 167faa657..8aa5268d5 100644 --- a/api/current.txt +++ b/api/current.txt @@ -311,6 +311,7 @@ package android.support.design.widget { public class SwipeDismissBehavior extends android.support.design.widget.CoordinatorLayout.Behavior { ctor public SwipeDismissBehavior(); + method public boolean canSwipeDismissView(android.view.View); method public int getDragState(); method public void setDragDismissDistance(float); method public void setEndAlphaSwipeDistance(float); diff --git a/src/android/support/design/widget/Snackbar.java b/src/android/support/design/widget/Snackbar.java index f0b213255..6ed8b0f57 100644 --- a/src/android/support/design/widget/Snackbar.java +++ b/src/android/support/design/widget/Snackbar.java @@ -811,6 +811,11 @@ public final class Snackbar { } final class Behavior extends SwipeDismissBehavior { + @Override + public boolean canSwipeDismissView(View child) { + return child instanceof SnackbarLayout; + } + @Override public boolean onInterceptTouchEvent(CoordinatorLayout parent, SnackbarLayout child, MotionEvent event) { diff --git a/src/android/support/design/widget/SwipeDismissBehavior.java b/src/android/support/design/widget/SwipeDismissBehavior.java index fc29201a1..e059fe549 100644 --- a/src/android/support/design/widget/SwipeDismissBehavior.java +++ b/src/android/support/design/widget/SwipeDismissBehavior.java @@ -17,6 +17,7 @@ package android.support.design.widget; import android.support.annotation.IntDef; +import android.support.annotation.NonNull; import android.support.v4.view.MotionEventCompat; import android.support.v4.view.ViewCompat; import android.support.v4.widget.ViewDragHelper; @@ -198,13 +199,27 @@ public class SwipeDismissBehavior extends CoordinatorLayout.Beha return false; } + /** + * Called when the user's input indicates that they want to swipe the given view. + * + * @param view View the user is attempting to swipe + * @return true if the view can be dismissed via swiping, false otherwise + */ + public boolean canSwipeDismissView(@NonNull View view) { + return true; + } + private final ViewDragHelper.Callback mDragCallback = new ViewDragHelper.Callback() { private int mOriginalCapturedViewLeft; @Override public boolean tryCaptureView(View child, int pointerId) { - mOriginalCapturedViewLeft = child.getLeft(); - return true; + return canSwipeDismissView(child); + } + + @Override + public void onViewCaptured(View capturedChild, int activePointerId) { + mOriginalCapturedViewLeft = capturedChild.getLeft(); } @Override