【问题标题】:Scroll items in RecyclerView so last item is always the same when soft keyboard is shown滚动 RecyclerView 中的项目,以便在显示软键盘时最后一个项目始终相同
【发布时间】:2016-05-15 18:25:36
【问题描述】:

我正在开发一个消息传递应用程序,布局没有什么特别之处 - 布局顶部的 Toolbar,底部的 EditText 和用于消息列表的 RecyclerView,填充空间介于两者之间。

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

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

有什么想法吗?

【问题讨论】:

  • 您找到解决方案了吗?
  • 并非如此。我找到的大多数解决方案都涉及到 recyclerview 上的大量高度调整和计算。

标签: android android-layout android-recyclerview


【解决方案1】:

我认为你最好的选择是在清单中设置adjustResize,然后创建一个覆盖onLayout() 的自定义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;
    }

【讨论】:

  • 感谢您的建议。这实际上滚动到列表中的最后一项,这不是我想要做的。我已经更新了问题以更清楚地说明。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多