【发布时间】:2015-10-20 06:48:33
【问题描述】:
我开发了一些聊天应用程序,我可以在其中发送和接收消息。但问题是每当我发送或接收消息时,回收站视图都不会滚动到顶部,因此消息会显示在键盘上方。
我用过上面提到的回收站视图android.support.v7.widget.RecyclerView。
【问题讨论】:
标签: android android-activity android-recyclerview
我开发了一些聊天应用程序,我可以在其中发送和接收消息。但问题是每当我发送或接收消息时,回收站视图都不会滚动到顶部,因此消息会显示在键盘上方。
我用过上面提到的回收站视图android.support.v7.widget.RecyclerView。
【问题讨论】:
标签: android android-activity android-recyclerview
在更新 recyclerview 时尝试运行此代码:
recyclerView.post(new Runnable() {
@Override
public void run() {
// Call smooth scroll
recyclerView.smoothScrollToPosition(adapter.getItemCount() - 1);
}
});
【讨论】:
adapter.getItemCount() - 1。否则它将滚动太快,因为滚动距离将在考虑不存在的项目的情况下计算。
ViewGroup 的每个项目,该怎么办?
我使用下面的代码来自动滚动到最后一个位置:
recyclerView.smoothScrollToPosition(adapter.getItemCount());
我实现了向列表中添加一个新项目。
【讨论】:
尝试使用以下方法自动滚动到您的特定位置。
adapter = new DeliveriesDateRecycleAdapter(getActivity(),sampleDatedate, position);
recyclerviewDates.setAdapter(adapter);
adapter.notifyDataSetChanged();
recyclerviewDates.smoothScrollToPosition(position);
注意:位置 - 您要显示的列表的位置。
【讨论】:
你试过RecyclerView.srollTo(int x, int y)吗?
编辑:在您发送或收到最后一条消息后直接尝试RecyclerView.scrollTo(0, 0)。
【讨论】:
尝试使用以下方法自动滚动到任何位置....您可以更改“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());
}
【讨论】:
我正在使用带有线性布局管理器的水平回收器视图,接受的解决方案对我不起作用
但以下解决方案有效,
(recycler.layoutManager as? LinearLayoutManager)?.scrollToPositionWithOffset(position, 0)
【讨论】: