java - 修复添加项目时的滚动视图位置,使其不会向上/向下颠簸
问题描述
我有 2 个 recyclerviews 托管在嵌套的滚动视图中。
我的问题是,当我在 Recyclerview 2 中选择项目时,它们将被添加到 Recyclerview 1 中,但随后视图被向下推,用户需要向下滚动以到达 recyclerview 2 中的初始位置。我添加了一个srolllistener
到育儿嵌套滚动视图,并且 y 偏移量保持不变,所以整个行为在某种程度上是有意义的(因为整个视图通过将项目添加到 recyclerview 1 中变得更大,并且偏移量保持不变,显然这种转变需要发生),但是这不是我想要的。
有没有办法“修复”我的视图,所以 YOffset 会自动改变并且没有颠簸?有趣的是,当我删除项目时,recyclerview 1 变小了,当 recyclerview 2 被聚焦时没有颠簸(如果我再次点击它,我可以删除一个项目),并且我希望在添加新项目时具有相同的行为。
编辑:
这里是对应的XML布局(AutofitRecyclerview是一个常规的recyclerview,这里我根据屏幕大小,在recyclerview的一个gridlayout里面设置了合适的item数)。并且当recyclerview_items_category_products
正在选择项目并将其添加到recyclerview_items_selected
整个视图中时,您总是需要向下滚动一点才能到达选择项目之前的位置
<androidx.core.widget.NestedScrollView
android:id="@+id/nestedscrollview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true"
tools:context=".ui.start.StartActivity">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="5dp">
<AutofitRecyclerView
android:id="@+id/recyclerview_items_selected"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnWidth="90dp"
android:orientation="vertical"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:listitem="@layout/listitem" />
<AutofitRecyclerView
android:id="@+id/recyclerview_items_category_products"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:columnWidth="90dp"
android:orientation="vertical"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/recyclerview_items_selected"
tools:listitem="@layout/listitem" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>
解决方案
推荐阅读
- javascript - 为多个父标签创建子标签时出现问题
- code-coverage - 如何在 Visual Studio for Mac COMMUNITY 8.3.4 中运行显示代码覆盖率的测试
- c# - 如何在 ASP.Net MVC C# - Re-Factorization 中获取方法的返回值(DRY 原则)
- node.js - Mongoose 中的自动索引是什么?
- attributes - 为什么 Dymola/Modelica 中的属性 min、max 不起作用?
- rust - 将 Rust 属性应用于多行
- ios - 致命错误:在展开可选值 UIPageViewController 时意外发现 nil
- html - 如何使用蚂蚁设计在 ReactJS 中将半圆形蒙版应用于图像并在图像内添加按钮?
- azure - 有什么方法可以在不使用 Azure SQL 中的外部表的情况下从两个不同的数据库中查询两个表?
- android - 如何在构造函数之外初始化字段