diff options
author | Yigit Boyar <yboyar@google.com> | 2014-09-19 09:29:55 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-09-19 09:29:55 +0000 |
commit | f1a094c9e1beabb9256eafb93e26113e71072c1a (patch) | |
tree | 062929e6ae2a9257d7d7426762c1c476ece31bcd | |
parent | a8c50be80b1feac234c9abd7c86e35ca048e24cc (diff) | |
parent | ae3164500a20da7848212c39e6e22075eda18b38 (diff) | |
download | frameworks_base-f1a094c9e1beabb9256eafb93e26113e71072c1a.zip frameworks_base-f1a094c9e1beabb9256eafb93e26113e71072c1a.tar.gz frameworks_base-f1a094c9e1beabb9256eafb93e26113e71072c1a.tar.bz2 |
am 914d2094: am 4a7c96d4: am 05041606: am 6cdaab18: Merge "Fix scroll position calculation when clipToPadding is false" into lmp-dev
* commit '914d2094d52804dd80a65f2a07656da7c6108a7c':
Fix scroll position calculation when clipToPadding is false
-rw-r--r-- | core/java/android/widget/FastScroller.java | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/core/java/android/widget/FastScroller.java b/core/java/android/widget/FastScroller.java index 06b7a93..0687905 100644 --- a/core/java/android/widget/FastScroller.java +++ b/core/java/android/widget/FastScroller.java @@ -1205,7 +1205,6 @@ class FastScroller { if (!hasSections || !mMatchDragPosition) { return (float) firstVisibleItem / (totalItemCount - visibleItemCount); } - // Ignore headers. firstVisibleItem -= mHeaderCount; if (firstVisibleItem < 0) { @@ -1255,9 +1254,19 @@ class FastScroller { // across the last item account for whatever space is remaining. if (firstVisibleItem > 0 && firstVisibleItem + visibleItemCount == totalItemCount) { final View lastChild = mList.getChildAt(visibleItemCount - 1); - final float lastItemVisible = (float) (mList.getHeight() - mList.getPaddingBottom() - - lastChild.getTop()) / lastChild.getHeight(); - result += (1 - result) * lastItemVisible; + final int bottomPadding = mList.getPaddingBottom(); + final int maxSize; + final int currentVisibleSize; + if (mList.getClipToPadding()) { + maxSize = lastChild.getHeight(); + currentVisibleSize = mList.getHeight() - bottomPadding - lastChild.getTop(); + } else { + maxSize = lastChild.getHeight() + bottomPadding; + currentVisibleSize = mList.getHeight() - lastChild.getTop(); + } + if (currentVisibleSize > 0 && maxSize > 0) { + result += (1 - result) * ((float) currentVisibleSize / maxSize ); + } } return result; |