我开发了一些聊天应用程序,可以发送和接收消息。但问题是,每当我发送或接收消息时,Recycler View 就无法滚动到顶部,导致消息被显示在键盘上方。
我使用了上面提到的 Recycler View android.support.v7.widget.RecyclerView
。
我开发了一些聊天应用程序,可以发送和接收消息。但问题是,每当我发送或接收消息时,Recycler View 就无法滚动到顶部,导致消息被显示在键盘上方。
我使用了上面提到的 Recycler View android.support.v7.widget.RecyclerView
。
尝试在更新recyclerview时运行此代码:
recyclerView.post(new Runnable() {
@Override
public void run() {
// Call smooth scroll
recyclerView.smoothScrollToPosition(adapter.getItemCount() - 1);
}
});
recyclerView.smoothScrollToPosition(adapter.getItemCount());
我正在实现向列表中添加新项的功能。
尝试以下方法以自动滚动到您的特定位置。
adapter = new DeliveriesDateRecycleAdapter(getActivity(),sampleDatedate, position);
recyclerviewDates.setAdapter(adapter);
adapter.notifyDataSetChanged();
recyclerviewDates.smoothScrollToPosition(position);
注意:position - 您想要显示的列表位置。
你尝试过使用RecyclerView.scrollTo(int x, int y)
吗?
编辑:在发送或接收最后一条消息后直接尝试RecyclerView.scrollTo(0, 0)
。
我正在使用水平的Recycler View和线性布局管理器,但是接受的解决方案对我不起作用。
但是下面的解决方案有效:
(recycler.layoutManager as? LinearLayoutManager)?.scrollToPositionWithOffset(position, 0)
如果您想将用户直接带到最新的项目,而无需滚动动画,请使用以下代码:
recyclerView.scrollToPosition(adapter.getItemCount()-1);
尝试使用以下方法自动滚动到任何位置...您可以更改“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());
}
adapter.getItemCount() - 1
。否则滚动得太快,因为滚动距离将基于不存在的项目计算。 - ArthurViewGroup
中的每个项目,该怎么办? - Anshul Tyagi