Art*_*hin 0 android listview scroll
我正在开发带有聊天的应用程序,我希望我ListView在用户发布新消息时滚动到底部,当用户位于列表底部并收到新消息时.我用这个ListView:
<ListView
android:id="@+id/list"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:divider="@null"
android:dividerHeight="0dp"
android:stackFromBottom="true"
android:paddingBottom="9dp"
android:clipToPadding="false"/>
Run Code Online (Sandbox Code Playgroud)
并且此方法在需要时强制滚动:
private void scrollListViewToBottom() {
listView.setSelection(adapter.getCount() - 1);
}
Run Code Online (Sandbox Code Playgroud)
但是当聊天包含高度大于屏幕高度的元素(大文本或图像)时,它会滚动到它的顶部.我需要我ListView精确地滚动到底部,而不是最后一个元素.
我尝试使用listView.scrollTo(0, listView.getBottom())方法,但结果很奇怪 - 有时滚动到最后一条消息+半屏间隙,有时到我看不到任何消息的地方.
有任何想法吗?谢谢.
您可以使用android:stackFromBottom="true"从下到上填充列表并添加android:transcriptMode="alwaysScroll"自动滚动列表视图.
你只需要打电话notifyDataSetChanged(),你的列表将自动滚动.
要在大块的情况下处理滚动到绝对底部,您可以在每个列表项下方添加高度为1 px的列表项,这样无论项目的高度是多少,您都将始终指向列表的末尾.
| 归档时间: |
|
| 查看次数: |
3135 次 |
| 最近记录: |