我在应用程序中使用recylerview,并且每当将新元素添加到recyclerview时,它都会通过使用滚动到最后一个元素

recyclerView.scrollToPosition(adapter.getCount());

但是,每当键盘打开时(由于editTextView),它都会调整 View 的大小,并且recyclerview会变小,但无法滚动到最后一个元素。
android:windowSoftInputMode="adjustResize"

我什至尝试使用以下代码滚动到最后一个元素,但是没有用
editTextView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if(hasFocus){
                recyclerView.scrollToPosition(chatAdapter.getItemCount());
            }
        }
    });

我可以尝试adjustPan来移动平移,但是它隐藏了我的工具栏。
请提出任何纠正问题的方法。

最佳答案

您可以使用recyclerview.addOnLayoutChangeListener()捕获键盘更改。
如果bottom小于oldBottom,则键盘处于向上状态。

if ( bottom < oldBottom) {
   recyclerview.postDelayed(new Runnable() {
       @Override
       public void run() {
           recyclerview.smoothScrollToPosition(bottomPosition);
       }
    }, 100);
}

10-07 19:22
查看更多