onLayout更改导致RecyclerView水平滚动重置

时间:2019-01-20 08:03:41

标签: android android-layout scroll android-recyclerview horizontal-scrolling

更改文本后,布局将刷新,recyclerview中的滚动将重置为位置0、0。

这是我的布局:

<LinearLayout android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:orientation="vertical">
    <android.support.v7.widget.RecyclerView android:id="@+id/recyclerview1"
                                            android:layout_width="match_parent"
                                            android:layout_height="132dp"
                                            android:scrollbars="horizontal" />
    <LinearLayout android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:layout_marginTop="8dp">
        <TextView android:text="@{prod.name}"
                  android:maxEms="12"
                  style="@style/ProdGroupLabel" />
        <Button android:id="@+id/buttonedit"
                android:text="Edit"
                android:visibility="@{prod.hasOptions ? View.VISIBLE : View.INVISIBLE}"
                style="@style/ProdGroupButtonEdit"/>
    </LinearLayout>
</LinearLayout>

现在,更改产品名称后,它将出现在文本视图<TextView android:text="@{prod.name}"中。这将迫使recyclerview1将其滚动位置重置为0,0。

关于如何防止滚动并保留原始滚动的任何想法吗?

谢谢...

1 个答案:

答案 0 :(得分:0)

您可以使用设置文本之前必须使用的布局管理器的最后一个可见位置

int position =  manager.findLastVisibleItemPosition();

那么你可以这样做

rv.getLayoutManager().scrollToPosition(poaition)

还有

  您可以使用

findLastCompletelyVisibleItemPosition