【问题标题】:Android linearLayoutManager.setStackFromEnd() not working for chat show last elementAndroid linearLayoutManager.setStackFromEnd() 不适用于聊天显示最后一个元素
【发布时间】:2026-01-27 19:25:02
【问题描述】:

我正在开发一个聊天应用程序。现在,在第一次从后端获取消息时,我希望我的线性布局指针移动到列表中的最后一条消息,以便用户在打开聊天片段时始终看到最新消息。 这是我的代码:

LinearLayoutManager linearLayoutManager = new LinearLayoutManager(homeScreenActivity);
   linearLayoutManager.setStackFromEnd(true);
   linearLayoutManager.setReverseLayout(true);
   chatRecycler.setLayoutManager(linearLayoutManager);

提前致谢!

【问题讨论】:

  • 获取数据后可以使用chatRecycler.scrollToPosition(chatRecycler.getAdapter().getItemCount() - 1);

标签: android android-layout android-fragments android-linearlayout


【解决方案1】:

如果你不知道什么时候输入数据,你可以在你的回收站视图上创建addOnLayoutChangeListener

addOnLayoutChangeListener

chatRecycler.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
            @Override
            public void onLayoutChange(View v,
                                       int left, int top, int right, int bottom,
                                       int oldLeft, int oldTop, int oldRight, int oldBottom) {
                if (bottom < oldBottom) {
                    chatRecycler.postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            recycler_discussion.scrollToPosition(
                                    recycler_discussion.getAdapter().getItemCount() - 1);
                        }
                    }, 50);
                }
            }
        });

【讨论】: