【发布时间】:2017-04-17 13:20:46
【问题描述】:
您好,我正在使用带有 GridLayoutManager 的 RecyclerView 来加载图像,但它的 scrollToPositionWithOffset() 方法不起作用。
我已经在 onSavedInstanceState() 中保存了 recyclerview 的第一个可见项目位置,我在 onViewStateRestored() 中检索了它的值,我每次都得到正确的位置,但是 RecyclerView 没有滚动到所需的位置。我通过旋转我的屏幕来检查它但是它没有滚动到所需的位置。
这是我的代码:
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("position", ((GridLayoutManager) recyclerView.getLayoutManager()).findFirstVisibleItemPosition());
}
@Override
public void onViewStateRestored(@Nullable Bundle savedInstanceState) {
super.onViewStateRestored(savedInstanceState);
if (savedInstanceState != null) {
int state = savedInstanceState.getInt("position");
((GridLayoutManager) recyclerView.getLayoutManager()).scrollToPositionWithOffset(state, 20);
}
}
【问题讨论】:
-
只使用recyclerviewObject.scrollToPosition(state);
-
谢谢!!但不工作:(
-
发生了什么?
-
当我旋转我的设备时它只停留在位置 0
-
这个 sn-p 将帮助您尝试 recyclerChatView.postDelayed(new Runnable() { @Override public void run() { recyclerChatView.scrollToPosition(state ); } }, 100);
标签: java android android-layout android-recyclerview gridlayoutmanager