Android_Recyclerview和ScrollView滚动到最底部失败的解决办法

最近的项目中遇到如下需求

原告,被告,代理人分别对应三个recyclerview,每次点击栏目的加号时增加一个条目,并滚动到新增的条目的位置.

布局如下:

从上到下三个RecyclerView分别称之为rv_1,rv_2,rv_3,外层的scrollview称为sv_all

理想中应该调用RecyclerView的smoothScrollToPosition(adapterYG.getItemCount() - 1)就能实现三个列表都滚动到最底端,但是撸完代码后发现效果不尽人意,于是尝试了其他办法.用三中不同的方式实现了RecyclerView和ScrollView滚动到最底部的办法


rv_1实现滚动的方式:


adapter.notifyDataSetChanged();
rv_1.smoothScrollToPosition(adapter.getItemCount() - 1);

(rv_2使用上面的方法时失效了,并没有滚动,于是把rv_2先放着,先解决rv_3,很奇怪,rv_3使用smoothScrollToPosition函数也不生效,但是考虑到,rv_3处于sc_all的最底层,滚动scrollview到最底层和滚动rv_3的效果一样,于是换一种办法解决)

rv_3实现滚动的方式:

//数据刷新后直接调用fullscroll并不会生效,需要在handle线程中执行
new Handler().post(new Runnable() {
      @Override
    public void run() {
        sv_all.fullScroll(ScrollView.FOCUS_DOWN);
     }
 });

rv_2实现滚动的方式:

(由于rv_2直接调用smoothScrollToPosition失效,所以只能考虑按照rv_3的实现方式来实现,在rv_2的外层包裹一层SrcollView id:srcollView2+LinearLayout  id:ll_2 ,但是仿照rv_3直接调用fullScroll居然也失败了,于是只能用第三种办法,自己算滚动的距离)

  new Handler().postDelayed(new Runnable() {
        @Override
      public void run() {  
      //end要显示的位置,可以根据自己的需要来计算
      int end = (ll_2.getMeasuredHeight());
         if (end < 0) {
          end = 0;
           }
        scrollView2.scrollTo(0, end);
    }
  }, 100);
最终用了三个办法,,,实现了三个recyclerview的滑动到最底部,,,,,






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值