rod*_*dly 0 android material-design
@Override
public void onResume() {
super.onResume();
recyclerView.post(new Runnable() {
@Override
public void run() {
((LinearLayoutManager) recyclerView.getLayoutManager()).scrollToPositionWithOffset(position, viewTopDistance);
}
});
}
Run Code Online (Sandbox Code Playgroud)
当用户单击启动另一个活动的视图时,位置和 viewTopDistance 会正确保存和保留。返回回收器视图后,大约 2/3 的时间列表看起来正确,另外 1/3 的时间它仅在顶部显示前 4 或 5 次(scrollToPositionWithOffset 不起作用)
关于为什么有时会失败的任何想法?
我相信你的问题出在时间上。尽管“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;
}
});
Run Code Online (Sandbox Code Playgroud)
成功(到目前为止)。您还可以查看实现此构造的演示代码(LstFrag.select)。
祝你好运
| 归档时间: |
|
| 查看次数: |
3571 次 |
| 最近记录: |