Android linearLayoutManager.setStackFromEnd()不适用于聊天显示最后一个元素

时间:2018-01-22 12:50:48

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

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

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

提前致谢!

1 个答案:

答案 0 :(得分:0)

如果您不知道输入数据的时间,可以在回收站视图上设置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);
                }
            }
        });