设置ListView显示到最后一行
2024-10-19 08:58:00
上次聊天的那个界面上用的一个TextView,然后每次消息都用text.append("消息内容"+"\n")函数来在text字符串后边接一段,然后重新显示这个内容。
现在需要美化界面,将消息内容放到一个ListView里边,每个消息是一个Item,然后进行显示,效果图如图所示:
那么问题来了,我每次有新的消息的时候,都会排列在上一个Item的下方,即使到了最底下,最新的消息也会沉到最下边,显示不出来,需要手动滑动屏幕来显示最新消息,显然是不符合实际要求的。于是想了一个办法,让他每次都显示ListView的最后一个Item,我是看的别人的CSDN博客(这里附上Ta的博客链接http://blog.csdn.net/snow12342234/article/details/49794507),这里直接照搬过来,然后供自己以后学习参考:
其实listView元素直接在xml里就可以简单定义实现好这个效果,附带实现的方法三个。
方法1:直接在layout里对listView的属性定义
StackFromBottom: true
Transcript Mode: alwayScroll
方法2: 把上面的方法改为java代码的方式声明
listView.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
listView.setStackFromBottom(true);
方法3: 变通的做法 把焦点focus去listView的最后一个item,那自然就是显示最底部
每次适配器 adapter.notifyDataSetChanged() 之后要记得调用,略麻烦
注意要用 post的方法确保listview的数据已经加载完毕
private void scrollMyListViewToBottom() {
listView.post(new Runnable() {
@Override
public void run() {
// Select the last row so it will scroll into view...
listView.setSelection(listAdapter.getCount() - 1);
}
});
}
好了,这三种方法我没有全部尝试,只是用了第二种,直接设置ListView,然后看效果就变成了这样:
程序还在完善中,回头还会再来补充......
最新文章
- GPUImage滤镜之自然饱和度
- HTTPS(SSL/TLS) 原理之深入浅出
- IRP IO_STACK_LOCATION 《寒江独钓》内核学习笔记(1)
- iOS 利用constraint实现2个控件上下的空白是相等的
- 1.1 MySQL 逻辑架构
- Apache Hadoop最佳实践和反模式
- UVA 11402 - Ahoy, Pirates!(段树)
- [原]左右的移动&;lt;&;lt;&;gt;&;gt;&;lt;&;gt;jQuery的实现
- LINUX centos 7.2/7.3 搭建LANP环境
- eclipse:Workspace in use or cannot be created
- VC++ 6.0中添加库文件和头文件
- Chapter 4 : Control Structures 1 : Selection
- 学号 20175223 《Java程序设计》第9周学习总结
- python中的字典
- Elasticsearch - Scroll
- C. Party Lemonade
- pgm17
- array_multisort
- linux wheel组
- Xen4CentOS 帮你移植到 CentOS 6 和 Xen 4
热门文章
- PHP continue break 区别 用法
- 2018-01-13 view绘制流程-activity启动流程-window-decorView-ViewRootImpl关系
- uva1659(最大费用循环流)
- 2016-2017-2 20155326实验二《Java面向对象程序设计》实验报告
- POJ3111 K Best 2017-05-11 18:12 31人阅读 评论(0) 收藏
- Windows 8.1 Update中的小改变
- JAVA本地读取文件,解决中文乱码问题
- python模块补充
- [mysql] mysql 查询语句收集
- E - Evaluate Matrix Sum