diff options
| author | Adam Powell <adamp@google.com> | 2010-11-10 17:21:23 -0800 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-11-10 17:21:23 -0800 |
| commit | 6e3d6cf2e99301d0602cb5119cf015931c88704d (patch) | |
| tree | 1b9202851bb362d7e258f24f5f83c34fd233d0b0 /core | |
| parent | ec4d82046bcdaa6ea1d43601c9d0673444f3e3bf (diff) | |
| parent | 0785279dad89d90564f42beb2c4620bf387a966e (diff) | |
| download | frameworks_base-6e3d6cf2e99301d0602cb5119cf015931c88704d.zip frameworks_base-6e3d6cf2e99301d0602cb5119cf015931c88704d.tar.gz frameworks_base-6e3d6cf2e99301d0602cb5119cf015931c88704d.tar.bz2 | |
Merge "Refine AbsListView transcript mode behavior."
Diffstat (limited to 'core')
| -rw-r--r-- | core/java/android/widget/AbsListView.java | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java index d0ed23f..ab5ff3d 100644 --- a/core/java/android/widget/AbsListView.java +++ b/core/java/android/widget/AbsListView.java @@ -3856,12 +3856,23 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te // Update this first, since setNextSelectedPositionInt inspects it mNeedSync = false; - if (mTranscriptMode == TRANSCRIPT_MODE_ALWAYS_SCROLL || - (mTranscriptMode == TRANSCRIPT_MODE_NORMAL && - mFirstPosition + getChildCount() >= mOldItemCount)) { + if (mTranscriptMode == TRANSCRIPT_MODE_ALWAYS_SCROLL) { mLayoutMode = LAYOUT_FORCE_BOTTOM; return; } + if (mTranscriptMode == TRANSCRIPT_MODE_NORMAL) { + final int childCount = getChildCount(); + final int listBottom = getBottom() - getPaddingBottom(); + final View lastChild = getChildAt(childCount - 1); + final int lastBottom = lastChild != null ? lastChild.getBottom() : listBottom; + if (mFirstPosition + childCount >= mOldItemCount && lastBottom <= listBottom) { + mLayoutMode = LAYOUT_FORCE_BOTTOM; + return; + } + // Something new came in and we didn't scroll; give the user a clue that + // there's something new. + awakenScrollBars(); + } switch (mSyncMode) { case SYNC_SELECTED_POSITION: |
