summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/view/ViewGroup.java3
-rw-r--r--core/java/android/widget/AbsListView.java8
2 files changed, 10 insertions, 1 deletions
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index eca583f46b22..e7b6c506f622 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -223,8 +223,9 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
/**
* When set, this ViewGroup should not intercept touch events.
+ * {@hide}
*/
- private static final int FLAG_DISALLOW_INTERCEPT = 0x80000;
+ protected static final int FLAG_DISALLOW_INTERCEPT = 0x80000;
/**
* Indicates which types of drawing caches are to be kept in memory.
diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java
index fcfecb30ca70..6cfeb684f3ce 100644
--- a/core/java/android/widget/AbsListView.java
+++ b/core/java/android/widget/AbsListView.java
@@ -2056,6 +2056,14 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
}
if (y != mLastY) {
+ // We may be here after stopping a fling and continuing to scroll.
+ // If so, we haven't disallowed intercepting touch events yet.
+ // Make sure that we do so in case we're in a parent that can intercept.
+ if ((mGroupFlags & FLAG_DISALLOW_INTERCEPT) == 0 &&
+ Math.abs(deltaY) > mTouchSlop) {
+ requestDisallowInterceptTouchEvent(true);
+ }
+
deltaY -= mMotionCorrection;
int incrementalDeltaY = mLastY != Integer.MIN_VALUE ? y - mLastY : deltaY;