android - 每次 RecycleView 滚动时如何在 RecycleView 中重置位置 ScrollView
问题描述
我有一个 RecycleView 滚动水平,它的每个项目都有一个 ScrollView 滚动垂直。当我向下滚动 ScrollView 时,它会记住该位置并且当我将 RecycleView 滚动到另一个项目时不会重置到顶部,如下所示:
当我滚动 RecycleView 时,谁能给我一个建议,让 ScrollView 重置到顶部?
解决方案
你可以这样称呼:
scrollView.fullScroll(ScrollView.FOCUS_TOP)
或这个 :
scrollView.scrollTo(0,0);
并且您可以在初始化 viewHolder 时在适配器的 onBindeViewHolder 中使用它,或者您可以将滚动侦听器附加到 RecyclerView 并使用滚动侦听器检测滚动
也许是这样的!
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
LinearLayoutManager linearLayoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
int fVitem = linearLayoutManager.findFirstVisibleItemPosition();
int lVitem = linearLayoutManager.findLastVisibleItemPosition();
for (int i = fVitem; i <= lVitem; i++) {
View view = linearLayoutManager.findViewByPosition(i);
ScrollView scrollView;
if (view.getTag() != null) scrollView = (ScrollView) view.getTag();
else {
scrollView = view.findViewById(R.id.myScrollView);
view.setTag(scrollView);
}
scrollView.scrollTo(0, 0);
}
}
});
但我认为如果你使用 obBindViewHolder 会更好的性能
推荐阅读
- objective-c - Objective-C,无符号长 _Nullable
- python - 重采样具有重复值的时间序列
- angular - 在 vue.js 应用程序中更新状态时使用什么(rxJs vs Vuex)
- javascript - 即使使用公共数据库,也缺少权限或权限不足
- spring-boot - 如何使用 Neo4j 在 Spring-boot 项目中设置实体?
- amazon-web-services - 使用 boto3 或 es 库将数据输入到 aws elasticsearch
- mysql - SQL:根据计划重新分配 id
- c++ - Getting constexpr to work with pow in C++17 on OSX
- python - 如何精确合并两个不同的DataFrame,它们之间有完全不同的列
- c# - 无法在 .net 核心中调用 Graph API