RecyclerView滑动到item顶部或底部

      最近在开发的时候,遇到了需要通过代码使得RecyclerView能够滑到指定item顶部位置的需求,在查看源码之后,发现RecyclerView已经提供了实现滑动到指定位置的方法,下面是可实现方法:

//平滑滚动
recyclerView.smoothScrollToPosition(position);
//非平滑滚动
recyclerView.scrollToPosition(position);

LinearLayoutManager manager = (LinearLayoutManager)recyclerView.getLayoutManager();
//平滑滚动
manager.scrollToPosition(position)

当然,除了上述方法以外,RecyclerView还有scrollBy、smoothScrollBy这两个方法(RecyclerView不支持scrollTo),可以实现滑动到指定位置,但是使用这三个方法滑动到对应item位置,需要计算item的高度或宽度,实现起来过于复杂。

点击对应按钮调用滑动方法时,有时会无效。这是因为默认情况下,如果item可见,调用滑动到该item的方法时,该方法将不执行滑动。这就说明,调用scrollToPosition或者smoothScrollToPosition并不能保证能够滑到item的顶部。这就尴尬了,这个问题该怎么解决呢?
查阅资料后,发现可以通过下面方法来解决:



LinearLayoutManager manager = (LinearLayoutManager)recyclerView.getLayoutManager();
//此方法可以将某个Item滑动到RecycleView的顶部。
manager.scrollToPositionWithOffset(position, 0);
//如果想滑动到RecycleView的底部,可以通过计算当前item的高度height
manager.scrollToPositionWithOffset(position, -height);

//但是当item的高度超过了RecycleView的高度时,item的高度就会固定不变,这时就滑不到底部,目前暂时的解决办法是,设置一个比较大的值,让其滑到底部。
manager.scrollToPositionWithOffset(position, -100000);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值