【问题标题】:How to auto scroll up Recycler view in Android?如何在 Android 中自动向上滚动 Recycler 视图?
【发布时间】:2015-10-20 06:48:33
【问题描述】:

我开发了一些聊天应用程序,我可以在其中发送和接收消息。但问题是每当我发送或接收消息时,回收站视图都不会滚动到顶部,因此消息会显示在键盘上方。

我用过上面提到的回收站视图android.support.v7.widget.RecyclerView

【问题讨论】:

    标签: android android-activity android-recyclerview


    【解决方案1】:

    在更新 recyclerview 时尝试运行此代码:

    recyclerView.post(new Runnable() {
        @Override
        public void run() {
            // Call smooth scroll  
            recyclerView.smoothScrollToPosition(adapter.getItemCount() - 1);                                 
        }
    });
    

    【讨论】:

    • 它会将您的回收站视图滚动到添加的最新项目。
    • 谢谢野兽。你拯救了我的一天。
    • 应该是adapter.getItemCount() - 1。否则它将滚动太快,因为滚动距离将在考虑不存在的项目的情况下计算。
    • 会很快的。如果我们想要平滑滚动以便任何人都可以查看ViewGroup 的每个项目,该怎么办?
    • 如何实现滚动慢
    【解决方案2】:

    我使用下面的代码来自动滚动到最后一个位置:

    recyclerView.smoothScrollToPosition(adapter.getItemCount());
    

    我实现了向列表中添加一个新项目。

    【讨论】:

      【解决方案3】:

      尝试使用以下方法自动滚动到您的特定位置。

      adapter = new DeliveriesDateRecycleAdapter(getActivity(),sampleDatedate, position);
                      recyclerviewDates.setAdapter(adapter);
                      adapter.notifyDataSetChanged();
                      recyclerviewDates.smoothScrollToPosition(position);
      

      注意:位置 - 您要显示的列表的位置。

      【讨论】:

        【解决方案4】:

        你试过RecyclerView.srollTo(int x, int y)吗?

        编辑:在您发送或收到最后一条消息后直接尝试RecyclerView.scrollTo(0, 0)

        【讨论】:

        • 不,我没试过。你能举个例子解释一下吗
        • //从顶部滚动项目3到20像素 linearLayoutManager.scrollToPositionWithOffset(3, 20);
        【解决方案5】:

        尝试使用以下方法自动滚动到任何位置....您可以更改“notifyItemChanged”方法的参数。

         public void printer(String message){
            block block=new block();
            block.details=message;
        
            blocks.add(block);
        
            blockAdapter.notifyItemChanged(0);
            recyclerView.scrollToPosition(blocks.size()-1);
           // recyclerView.scrollTo(blocks.size()-1,blocks.size());
        }
        

        【讨论】:

          【解决方案6】:

          我正在使用带有线性布局管理器的水平回收器视图,接受的解决方案对我不起作用

          但以下解决方案有效,

          (recycler.layoutManager as? LinearLayoutManager)?.scrollToPositionWithOffset(position, 0)
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-03-21
            • 1970-01-01
            • 2014-05-13
            • 1970-01-01
            • 1970-01-01
            • 2012-05-06
            • 2017-08-21
            • 1970-01-01
            相关资源
            最近更新 更多