以编程方式添加不相关的视图时,RecyclerView滚动偏移量将重置

时间:2019-01-17 13:22:56

标签: java android-recyclerview

每当我在RecyclerView顶部添加TextView时,水平滚动偏移都会重置为开始。

我有一个LinearLayout,其中包含两个项目-TextViewContainer和RecyclerView。在RecyclerView初始化之后,我通过以下方式将水平滚动偏移量更新了100像素:

 recyclerView.scrollTo( 100, 0 ).

然后,每当我将TextView添加到TextViewContainer时,无论出于何种原因,RecyclerView偏移都会重置为开始,即使它们之间没有任何关系。

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainLayout"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="wrap_content">

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/textViewContainer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" />

        <RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
     </LinearLayout>

我通过以下方式添加TextView:

    LinearLayout container = rootView.findViewById( 
    R.layout.textViewContainer );

    TextView textView = new TextView(container.getContext());
    textView.setLayoutParams(new 
    LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 
    ViewGroup.LayoutParams.WRAP_CONTENT));
    textView.setGravity(Gravity.CENTER);
    textView.setTextSize( 20.5f );
    textView.setText("TEST" );
    container.removeAllViews();
    container.addView(textView);

我希望RecyclerView保持在100像素的水平偏移处,并且当我在单独的容器中添加上述TextView时,不会将其重置为0。

textViewContainer与RecyclerView无关,我不明白为什么将TextView添加到Text View Container后就将其重置为开始。

我能想到的唯一原因是因为RecyclerView中的每个项目都比屏幕宽度宽,这也许就是Android试图重置水平滚动偏移的原因,因为主布局发生了变化,不确定。

有什么办法可以防止这种情况的发生?谢谢!

0 个答案:

没有答案