Fix a bug where requestDisallowInterceptTouchEvent does not get called

when scrolling is resumed after stopping a fling.

Change-Id: I6796c5082cb81b3116de5baf1f27fe3addb40d00
This commit is contained in:
Adam Powell
2010-06-22 17:14:44 -07:00
parent 750600a187
commit 110486f932
2 changed files with 10 additions and 1 deletions

View File

@@ -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.

View File

@@ -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;