摘要:
项目中有一块和微信做的很像,需求看了朋友圈点击回复后的效果(软键盘弹出后,话题会精确定位至软键盘之上,评论框与话题底部对齐的效果),然后对我们也提出了同样的要求(虽然这个功能十分华丽也十分实用,但我们十分不解,微信拉泡屎都是香的?)
首先,查阅大量的资料,筛选出一些有用的信息:
提问的:http://bbs.csdn.net/topics/391042426
回答一:http://blog.csdn.net/carlos1992/article/details/50435882
回答二:http://blog.csdn.net/tobevan/article/details/52675168
在测试过下面这两种解决方案后,依然很不满意,目前也没有更多的资料能解决这块的问题。
1. 使用了高版本的API(回答一里的setSelectionFromTop需要最低版本为21 API LEVEL)。因为公司的项目是基于API 14,太高肯定是不行的。
2. 功能不完善,效果也不满意。第一个回答使用了高版本API就不说了,第二个回答的定位是有问题的,如果回复按钮靠近屏幕底部,那肯定是无法准确定位的。
翻阅Android API
其实这个需求最核心的问题就是item在ListView中的定位,要计算出相对于ListView向上或者向下偏移多少距离。
翻阅了android的API并且亲测之后,发现以smoothScrollXX开头的API是很好用,并且一定会有效果的,而setSelectionXX开头的API很难用,需要自己做延迟。
最终解决
基本回答二的项目,我在之上做了改进,使用了 smoothScrollBy这个低版本的API(API LEVEL >= 8都能使用),增加了键盘弹出时再次点击键盘上方其他回复按钮时的定位效果。
解决方案和实现效果已上传至https://github.com/freestyletime/WXListView
如果解决了您的问题,顺手点个赞或者在github上给个star,感谢~
这里是Freestyletime@foxmail.com,欢迎交流。
本人原创作品,转载请标明出处。