summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYigit Boyar <yboyar@google.com>2014-09-19 09:29:55 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-09-19 09:29:55 +0000
commitf1a094c9e1beabb9256eafb93e26113e71072c1a (patch)
tree062929e6ae2a9257d7d7426762c1c476ece31bcd
parenta8c50be80b1feac234c9abd7c86e35ca048e24cc (diff)
parentae3164500a20da7848212c39e6e22075eda18b38 (diff)
downloadframeworks_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.java17
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;