【问题标题】:Android studio how to keep the chat scrolled down to the last message?Android studio如何保持聊天向下滚动到最后一条消息?
【发布时间】:2021-07-03 18:38:02
【问题描述】:

我正在开发一个聊天应用程序。我想保持聊天显示最后发送的消息(一直向下滚动)。

每次我重新打开聊天或键盘显示时,消息都会向上滚动。如此处所示

  recyclerView = findViewById(R.id.recycle_view);
        recyclerView.setHasFixedSize(true);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getApplicationContext());
        linearLayoutManager.setStackFromEnd(true);
         recyclerView.setLayoutManager(linearLayoutManager);
         profile_image = findViewById(R.id.profile_image);

虽然这条线应该可以解决问题,但它没有:

 linearLayoutManager.setStackFromEnd(true);

我该如何解决?

【问题讨论】:

    标签: android android-recyclerview


    【解决方案1】:

    在获取/阅读代码下方运行的任何新消息后试试这个

    recyclerView.scrollToPosition(messages.size() - 1);
    

    这将滚动到消息大小的末尾。

    【讨论】:

    • 这个应该添加到适配器类中吗?
    • 每次收到新消息时都应该应用它。它将滚动以结束所有新消息。
    • 没有不在适配器中。在聊天活动中申请。
    • 它起作用了,现在当我打开聊天时它会向下滚动,当我发送消息时它也会向下滚动。但是当我关闭键盘时,它会滚动到消息的中间,而不是最后。你知道如何解决这个问题吗?
    • 也把它放在发送按钮上。因此,每当您发送消息时,它都会在客户端设备上向下滚动。如果这不能解决,请尝试使用软键盘。
    【解决方案2】:

    您可以使用.setStackFromEnd(true).setReverseLayout(true) setReverseLayout 反转元素的顺序,setStackFromEnd 将视图设置为显示最后一个元素。

    【讨论】:

    • 我正在使用这个 linearLayoutManager.setStackFromEnd(true);但它不能解决它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2020-04-09
    • 1970-01-01
    • 2018-10-09
    • 2015-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多