首页 > 解决方案 > 修复添加项目时的滚动视图位置,使其不会向上/向下颠簸

问题描述

我有 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>

标签: javaandroidandroid-layoutkotlinandroid-recyclerview

解决方案


推荐阅读