diff options
| author | Chris Banes <chrisbanes@google.com> | 2015-12-07 11:53:26 +0000 |
|---|---|---|
| committer | Chris Banes <chrisbanes@google.com> | 2015-12-07 11:53:26 +0000 |
| commit | f2a7e9712f20bdb9563aee681b861569a6372ea4 (patch) | |
| tree | e7b2a6c30f14dbecd9e08591e030eee6069c7119 /core/java/android/widget/ScrollView.java | |
| parent | e85cf98a80ce54649295994385e0830ec513f1cf (diff) | |
Fix possibility of ScrollView not allowing clicks after a fling
The reason that manifests is because SV's
onInterceptTouchEvent checks if it's scroller.isFinished()
returns true. The result of Scroller.isFinished() is only
valid if it has had computeScrollOffset() called on it before.
ScrollView currently posts a invalidation after a computeScroll()
call, which means that isFinished() *should* be valid, but it's
better to be explicit which CL adds.
BUG: 26051101
Change-Id: If78f48dc855de1776011cb7b0f95cb0a80d9b777
Diffstat (limited to 'core/java/android/widget/ScrollView.java')
| -rw-r--r-- | core/java/android/widget/ScrollView.java | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/core/java/android/widget/ScrollView.java b/core/java/android/widget/ScrollView.java index 529d29530a61..78b931d94fd2 100644 --- a/core/java/android/widget/ScrollView.java +++ b/core/java/android/widget/ScrollView.java @@ -557,10 +557,12 @@ public class ScrollView extends FrameLayout { initOrResetVelocityTracker(); mVelocityTracker.addMovement(ev); /* - * If being flinged and user touches the screen, initiate drag; - * otherwise don't. mScroller.isFinished should be false when - * being flinged. + * If being flinged and user touches the screen, initiate drag; + * otherwise don't. mScroller.isFinished should be false when + * being flinged. We need to call computeScrollOffset() first so that + * isFinished() is correct. */ + mScroller.computeScrollOffset(); mIsBeingDragged = !mScroller.isFinished(); if (mIsBeingDragged && mScrollStrictSpan == null) { mScrollStrictSpan = StrictMode.enterCriticalSpan("ScrollView-scroll"); |
