每当我在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试图重置水平滚动偏移的原因,因为主布局发生了变化,不确定。
有什么办法可以防止这种情况的发生?谢谢!