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;
}