Making sure overview mode can't get stuck (issue 11022017)
Change-Id: Iee2088f8781d375b0b83625023fb125a869a2868
This commit is contained in:
parent
edaaa30232
commit
7a9e58aa17
|
@ -990,13 +990,14 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc
|
||||||
// in accordance with any scroll effects.
|
// in accordance with any scroll effects.
|
||||||
mForceScreenScrolled = true;
|
mForceScreenScrolled = true;
|
||||||
mRecomputePageSpacing = true;
|
mRecomputePageSpacing = true;
|
||||||
|
updateFreescrollBounds();
|
||||||
invalidate();
|
invalidate();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onChildViewRemoved(View parent, View child) {
|
public void onChildViewRemoved(View parent, View child) {
|
||||||
mForceScreenScrolled = true;
|
mForceScreenScrolled = true;
|
||||||
|
updateFreescrollBounds();
|
||||||
invalidate();
|
invalidate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1558,6 +1559,17 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc
|
||||||
setEnableFreeScroll(false, snapPage);
|
setEnableFreeScroll(false, snapPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void updateFreescrollBounds() {
|
||||||
|
getOverviewModePages(mTempVisiblePagesRange);
|
||||||
|
if (isLayoutRtl()) {
|
||||||
|
mFreeScrollMinScrollX = getScrollForPage(mTempVisiblePagesRange[1]);
|
||||||
|
mFreeScrollMaxScrollX = getScrollForPage(mTempVisiblePagesRange[0]);
|
||||||
|
} else {
|
||||||
|
mFreeScrollMinScrollX = getScrollForPage(mTempVisiblePagesRange[0]);
|
||||||
|
mFreeScrollMaxScrollX = getScrollForPage(mTempVisiblePagesRange[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void setEnableFreeScroll(boolean freeScroll, int snapPage) {
|
private void setEnableFreeScroll(boolean freeScroll, int snapPage) {
|
||||||
mFreeScroll = freeScroll;
|
mFreeScroll = freeScroll;
|
||||||
|
|
||||||
|
@ -1565,18 +1577,11 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc
|
||||||
snapPage = getPageNearestToCenterOfScreen();
|
snapPage = getPageNearestToCenterOfScreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
getOverviewModePages(mTempVisiblePagesRange);
|
|
||||||
if (!mFreeScroll) {
|
if (!mFreeScroll) {
|
||||||
snapToPage(snapPage);
|
snapToPage(snapPage);
|
||||||
} else {
|
} else {
|
||||||
if (isLayoutRtl()) {
|
updateFreescrollBounds();
|
||||||
mFreeScrollMinScrollX = getScrollForPage(mTempVisiblePagesRange[1]);
|
getOverviewModePages(mTempVisiblePagesRange);
|
||||||
mFreeScrollMaxScrollX = getScrollForPage(mTempVisiblePagesRange[0]);
|
|
||||||
} else {
|
|
||||||
mFreeScrollMinScrollX = getScrollForPage(mTempVisiblePagesRange[0]);
|
|
||||||
mFreeScrollMaxScrollX = getScrollForPage(mTempVisiblePagesRange[1]);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (getCurrentPage() < mTempVisiblePagesRange[0]) {
|
if (getCurrentPage() < mTempVisiblePagesRange[0]) {
|
||||||
setCurrentPage(mTempVisiblePagesRange[0]);
|
setCurrentPage(mTempVisiblePagesRange[0]);
|
||||||
} else if (getCurrentPage() > mTempVisiblePagesRange[1]) {
|
} else if (getCurrentPage() > mTempVisiblePagesRange[1]) {
|
||||||
|
|
Loading…
Reference in New Issue