@Override
public void onResume() {
super.onResume();
recyclerView.post(new Runnable() {
@Override
public void run() {
((LinearLayoutManager) recyclerView.getLayoutManager()).scrollToPositionWithOffset(position, viewTopDistance);
}
});
}
当用户单击启动另一个活动的视图时,position和viewTopDistance将被正确保存并保留。返回到回收站视图大约2/3的时间列表看起来是正确的,另外1/3的时间它只显示在顶部的前4或5次(scrollToPositionWithOffset不起作用)
有时为什么会失败的任何想法?
答案 0 :(得分:3)
我相信你的问题在于时机。虽然' post'延迟' scrollToPositionWithOffset',视图可能并不总是准备好。我使用以下构造。
mLstView.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
if (mLstView.getChildCount() > 0) {
recyclerView.getViewTreeObserver().removeOnPreDrawListener(this);
llMgr.scrollToPositionWithOffset(position, viewTopDistance);
return true;
}
return false;
}
});
成功(到目前为止)。您还可以查看实现此构造的demo code(LstFrag.select)。
祝你好运