RecyclerView踩坑之输入法弹出数据自动滚动

本文记录了在开发即时通讯应用时,使用RecyclerView作为聊天窗口遇到的问题。当输入法弹出时,如何使RecyclerView底部数据自动滚动到输入法上方。尝试过监听view的size变化和ListView的android:transcriptMode属性,但在RecyclerView中,通过LinearLayoutManager的setStackFromEnd(true)实现了类似效果。

RecyclerView在使用过程中确实能称之为神器,但也难免会遇到各种问题,接下来就把我今天遇到的问题来记录一下。

背景是建立在IM上的,我们使用环信来做即时通讯。聊天窗口就是使用RecyclerView做的,
先看看效果吧。
聊天窗口

其中文本和语音不同的布局,采用的是adapter的getItemViewType决定的,具体的实现在这里就不贴了。
接下来说重点,在点击输入框输入文本时,需要底部的数据自动滚动到输入法上方,效果看图。
自动滚动

那么这个效果是如何实现的呢?
说说我以前用过的几种方法

  1. 监听view的sizechange状态,自动滚动数据
  2. 使用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);
整个世界都光明了。。。。。。。。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值