键盘打开时相应地向上滚动 RecyclerView

Ari*_*ruf 8 keyboard android scroll android-edittext android-recyclerview

我创建了一个聊天活动,就像 facebook Messenger 一样,底部有一个 EditText,上面是消息的 RecyclerView。当键盘打开时,我想向上滚动 RecyclerView 到底应该向上滚动多少。更具体地说,假设 RecyclerView 中有 5 条消息,当前第 3 条消息位于 EditText 上方。所以当键盘打开时,我想像以前一样在 EditText 上方保留第三条消息。我已经搜索过但找不到。如果这是一个重复的问题,如果有人可以提供链接,我将不胜感激。

小智 5

recyclerView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
        @Override
        public void onLayoutChange(View view, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
            if ( bottom < oldBottom) {
                recyclerView.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        recyclerView.scrollToPosition(adapter.getItemCount());
                    }
                }, 100);
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

如果它不起作用使用smoothScrollToPosition而不是scrollToPosition

这对我来说是工作。


Sam*_*ani -2

我遇到了同样的问题,我所做的是当键盘打开时,我将 recyclerView 滚动到 recyclerView 中的最后一个项目,因此不会隐藏任何项目。我认为这比您提议的方式容易得多。所以代码如下:

  recyclerView.postDelayed(new Runnable() {
            @Override
            public void run() {
                recyclerView.scrollToPosition(recyclerView.getAdapter().getItemCount() - 1);
            }
        }, 300);
Run Code Online (Sandbox Code Playgroud)