RecyclerView在使用过程中确实能称之为神器,但也难免会遇到各种问题,接下来就把我今天遇到的问题来记录一下。
背景是建立在IM上的,我们使用环信来做即时通讯。聊天窗口就是使用RecyclerView做的,
先看看效果吧。
其中文本和语音不同的布局,采用的是adapter的getItemViewType决定的,具体的实现在这里就不贴了。
接下来说重点,在点击输入框输入文本时,需要底部的数据自动滚动到输入法上方,效果看图。
那么这个效果是如何实现的呢?
说说我以前用过的几种方法
- 监听view的sizechange状态,自动滚动数据
- 使用listview的android:transcriptMode
监听sizechange比较麻烦,我就不写了,感兴趣的可以自行百度。
正是因为重写view比较麻烦,所以在之后我又发现了一种简单的方法。那个时候用的是Listview,直接在布局文件中加入android:transcriptMode属性就好了。至于这个属性的值有normal、alwaysScroll、disabled,不同值的不同效果,可以自行设置试一试,贴一个链接吧http://blog.csdn.net/natloc/article/details/50850099。
上面说了很多,但是那毕竟是昨日黄昏了,我现在用的是RecyclerView,按照之前的方法,发现根本就没有android:transcriptMode这个属性,太纠结了~~怎么办?换回Listview吗?不是我的性格啊,继续找。终于在RecyclerView的LayoutManager中找到了结果。
我使用的是LinearLayoutManager,其中linearLayoutManager.setStackFromEnd(true);
整个世界都光明了。。。。。。。。
本文记录了在开发即时通讯应用时,使用RecyclerView作为聊天窗口遇到的问题。当输入法弹出时,如何使RecyclerView底部数据自动滚动到输入法上方。尝试过监听view的size变化和ListView的android:transcriptMode属性,但在RecyclerView中,通过LinearLayoutManager的setStackFromEnd(true)实现了类似效果。

2550

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



