diff --git a/core/java/android/widget/ListView.java b/core/java/android/widget/ListView.java index 9ef1aa1a1f2db..7f7a3a715a23c 100644 --- a/core/java/android/widget/ListView.java +++ b/core/java/android/widget/ListView.java @@ -3361,6 +3361,7 @@ public class ListView extends AbsListView { final ListAdapter adapter = mAdapter; int closetChildIndex = -1; + int closestChildTop = 0; if (adapter != null && gainFocus && previouslyFocusedRect != null) { previouslyFocusedRect.offset(mScrollX, mScrollY); @@ -3392,12 +3393,13 @@ public class ListView extends AbsListView { if (distance < minDistance) { minDistance = distance; closetChildIndex = i; + closestChildTop = other.getTop(); } } } if (closetChildIndex >= 0) { - setSelection(closetChildIndex + mFirstPosition); + setSelectionFromTop(closetChildIndex + mFirstPosition, closestChildTop); } else { requestLayout(); }