@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不起作用)
你知道为什么有时会失败吗?
发布于 2015-07-11 20:19:24
我相信你的问题出在时机上。尽管“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)。
祝好运
https://stackoverflow.com/questions/29399712
复制相似问题