我正在通过socket.io创建聊天应用程序。它的工作完全正常。现在我想要的是,当用户在edittext中输入文本时,它应该到达通过此方法执行的结束位置。
myRecylerView.smoothScrollToPosition(AbcChatBoxAdapter.getItemCount() - 1);
我将此代码保留在editext的提交按钮上。现在,每次用户单击此按钮时,虽然它位于列表的底部,但显示从上到下滚动。我想要的是,当用户单击“提交”按钮时,聊天消息应停留在底部,而不像whatsapp一样滚动。
有没有办法做到这一点。
答案 0 :(得分:0)
使用scrollToPosition而不是smoothScrollToPosition
答案 1 :(得分:0)
mAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
@Override
public void onItemRangeInserted(int positionStart, int itemCount) {
super.onItemRangeInserted(positionStart, itemCount);
int myMessageCount = mAdapter.getItemCount();
int lastVisiblePosition =
mLinearLayoutManager.findLastCompletelyVisibleItemPosition();
// If the recycler view is initially being loaded or the
// user is at the bottom of the list, scroll to the bottom
// of the list to show the newly added message.
if (lastVisiblePosition == -1 ||
(positionStart >= (myMessageCount - 1) &&
lastVisiblePosition == (positionStart - 1))) {
mBinding.messageRecyclerView.scrollToPosition(positionStart);
}
}
});
mBinding.messageRecyclerView或mMessageRecyclerView(mMessageRecyclerView = findViewById(R.id.rv);)