Android 在RecyclerView中滚动项目,以便在显示软键盘时最后一个项目始终相同

Android 在RecyclerView中滚动项目,以便在显示软键盘时最后一个项目始终相同,android,android-layout,android-recyclerview,Android,Android Layout,Android Recyclerview,我正在开发一个消息应用程序,它的布局没有什么特别之处——在布局的顶部有一个工具栏,在底部有一个编辑文本,在消息列表中有一个回收视图,填补了中间的空白 我的问题是,当通过单击/按下EditText显示软键盘时,RecyclerView中最后一个可见项的位置不会保持不变。i、 e.如果列表中有20个项目,并且在没有显示软键盘时最后一个可见的项目是项目12,那么在显示软键盘时,我仍然希望最后一个可见的项目是项目12 我已经在清单和代码中尝试了adjustPan和adjustResize的组合,但没有解

我正在开发一个消息应用程序,它的布局没有什么特别之处——在布局的顶部有一个
工具栏
,在底部有一个
编辑文本
,在消息列表中有一个
回收视图
,填补了中间的空白

我的问题是,当通过单击/按下
EditText
显示软键盘时,
RecyclerView
中最后一个可见项的位置不会保持不变。i、 e.如果列表中有20个项目,并且在没有显示软键盘时最后一个可见的项目是项目12,那么在显示软键盘时,我仍然希望最后一个可见的项目是项目12

我已经在清单和代码中尝试了adjustPan和adjustResize的组合,但没有解决问题


有什么想法吗?

我认为最好的办法是在清单中设置
adjustResize
,然后创建一个自定义的
RecyclerView
子类来覆盖
onLayout()


我认为最好的办法是在清单中设置
adjustResize
,然后创建一个自定义的
RecyclerView
子类来覆盖
onLayout()


谢谢你的建议。这实际上是滚动到列表中的最后一项,这不是我想要做的。我已经更新了这个问题,让它更清晰。谢谢你的建议。这实际上是滚动到列表中的最后一项,这不是我想要做的。我更新了这个问题,让它更清晰。你找到解决这个问题的方法了吗?没有。我找到的大多数解决方案都涉及到在recyclerview上进行大量的高度调整和计算。你找到解决方案了吗?没有。我找到的大多数解决方案都需要在recyclerview上进行大量的高度调整和计算。
    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {

        super.onLayout(changed, l, t, r, b);

        int height = b - t;
        if (height != mLastHeight) {
            int last = getAdapter.getItemCount() - 1;
            scrollToPosition(last);
        }
        mLastHeight = height;
    }