转载自 https://blog.csdn.net/natloc/article/details/50850099
默认情况下,当添加的 Item 超出 ListView 的范围后,ListView 并没有刷新让最新一条显示出来。而在 qq/微信 聊天中,发新的消息后会自动滚动显示出最下面的一条信息。
调用方式
- AbsListView.java:
public int getTranscriptMode() // 用于查询当前的 transcript 模式 void setTranscriptMode(int mode) // 用于设置 transcript 模式 AbsListView.TRANSCRIPT_MODE_DISABLED // 禁用
AbsListView.TRANSCRIPT_MODE_NORMAL // 正常状态
AbsListView.TRANSCRIPT_MODE_ALWAYS_SCROLL // 总是滚动到最新一条
布局文件设置
<ListView android:id="@+id/lv_test"
android:layout_width="match_parent"
android:layout_height="300dp"
<!-- 以下模式只能选一种 -->
android:transcriptMode="normal"
android:transcriptMode="disabled"
android:transcriptMode="alwaysScroll"
>
源码分析
- 获取当前模式:
/**
* Returns the current transcript mode.
*
* @return {@link #TRANSCRIPT_MODE_DISABLED}, {@link #TRANSCRIPT_MODE_NORMAL} or
* {@link #TRANSCRIPT_MODE_ALWAYS_SCROLL}
*/
- 设置模式:
/**
* Puts the list or grid into transcript mode. In this mode the list or grid will always scroll
* to the bottom to show new items.
*
* @param mode the transcript mode to set
*
* @see #TRANSCRIPT_MODE_DISABLED
* @see #TRANSCRIPT_MODE_NORMAL
* @see #TRANSCRIPT_MODE_ALWAYS_SCROLL
*/
public void setTranscriptMode(int mode) {
mTranscriptMode = mode;
}
- 效果图:
- disable 状态:

- normal 状态:

- always 状态:

- disable 状态:
本文介绍如何在Android ListView中实现消息自动滚动至最新一条的功能,通过设置transcript模式为AbsListView.TRANSCRIPT_MODE_ALWAYS_SCROLL,可以确保新添加的item始终显示在屏幕底部,类似于QQ/微信聊天中的自动滚动效果。

被折叠的 条评论
为什么被折叠?



