onLayout изменено вызывает горизонтальную прокрутку RecyclerView для сброса - PullRequest
0 голосов
/ 20 января 2019

Когда текст изменяется, макет обновляется и прокрутка в окне повторного просмотра сбрасывается в положение 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 голосов
/ 20 января 2019

Вы можете использовать последнюю видимую позицию менеджера компоновки, которую вы должны использовать перед настройкой текста

int position =  manager.findLastVisibleItemPosition();

Тогда вы можете сделать так

rv.getLayoutManager().scrollToPosition(poaition)

Также есть

findLastCompletelyVisibleItemPosition , который вы можете использовать.

...