Merge "Fix scroll amount calculation in ViewRootImpl" into nyc-dev am: b1e24209f1
am: 2f2af39911
* commit '2f2af39911976974177e92099e27c10fe93beddd':
Fix scroll amount calculation in ViewRootImpl
Change-Id: I145857ecc2a07ad1b7bb80334ff81c2d990bb199
This commit is contained in:
@@ -3078,16 +3078,22 @@ public final class ViewRootImpl implements ViewParent,
|
|||||||
// best is probably just to leave things as-is.
|
// best is probably just to leave things as-is.
|
||||||
if (DEBUG_INPUT_RESIZE) Log.v(mTag,
|
if (DEBUG_INPUT_RESIZE) Log.v(mTag,
|
||||||
"Too tall; leaving scrollY=" + scrollY);
|
"Too tall; leaving scrollY=" + scrollY);
|
||||||
} else if ((mTempRect.top-scrollY) < vi.top) {
|
}
|
||||||
scrollY -= vi.top - (mTempRect.top-scrollY);
|
// Next, check whether top or bottom is covered based on the non-scrolled
|
||||||
|
// position, and calculate new scrollY (or set it to 0).
|
||||||
|
// We can't keep using mScrollY here. For example mScrollY is non-zero
|
||||||
|
// due to IME, then IME goes away. The current value of mScrollY leaves top
|
||||||
|
// and bottom both visible, but we still need to scroll it back to 0.
|
||||||
|
else if (mTempRect.top < vi.top) {
|
||||||
|
scrollY = mTempRect.top - vi.top;
|
||||||
if (DEBUG_INPUT_RESIZE) Log.v(mTag,
|
if (DEBUG_INPUT_RESIZE) Log.v(mTag,
|
||||||
"Top covered; scrollY=" + scrollY);
|
"Top covered; scrollY=" + scrollY);
|
||||||
} else if ((mTempRect.bottom-scrollY)
|
} else if (mTempRect.bottom > (mView.getHeight()-vi.bottom)) {
|
||||||
> (mView.getHeight()-vi.bottom)) {
|
scrollY = mTempRect.bottom - (mView.getHeight()-vi.bottom);
|
||||||
scrollY += (mTempRect.bottom-scrollY)
|
|
||||||
- (mView.getHeight()-vi.bottom);
|
|
||||||
if (DEBUG_INPUT_RESIZE) Log.v(mTag,
|
if (DEBUG_INPUT_RESIZE) Log.v(mTag,
|
||||||
"Bottom covered; scrollY=" + scrollY);
|
"Bottom covered; scrollY=" + scrollY);
|
||||||
|
} else {
|
||||||
|
scrollY = 0;
|
||||||
}
|
}
|
||||||
handled = true;
|
handled = true;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user