私のアプリは、LinearLayoutManager
とLinearSnapHelper
のRecyclerView
を使用しています。 私のアプリの初めに、私のRecyclerView
は、アニメーションなしですぐにスナップ位置にスクロールしたいと思っています。直ちにRecyclerview
私はRecyclerView.smoothScrollToPosition()
を知っていますが、それはスクロールをアニメートします。どのようにこれを達成するための任意のアイデアですか?ありがとう! RecyclerView
ため
mRecyclerRooms = (RecyclerView) mView.findViewById(R.id.recyclerRooms);
mRoomsLayoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false);
mRecyclerRooms.setLayoutManager(mRoomsLayoutManager);
mSnapHelperRooms = new LinearSnapHelper();
mSnapHelperRooms.attachToRecyclerView(mRecyclerRooms);
mRecyclerRooms.addOnScrollListener(mRoomScrollListener);
XML::
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerRooms"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
android:clipToPadding="false"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
mRoomScrollListener()
はfloat distanceFromSnap = abs(mSnapHelperRooms.calculateDistanceToFinalSnap(mRecyclerRooms.getLayoutManager(), view)[0]);
経由でスナップしてから拡張する距離を計算するために使用されRecyclerView
を設定します:)
コード
項目に応じて考え方は、RecyclerView
の中心になるはずのスナップ位置の近くにあるときにアイテムを大きくしてアルファを増やすことです。これは
recyclerViewList.scrollToPosition(position);
私はそれを試みましたが、それは私のために正確なスナップ位置の近くにスクロールしません。なぜなのかご存知ですか? –
ここにあなたのコードを投稿してください –
私はそれが正しくスクロールしない理由を知ったと思います。私は自分のアイテムを常に「RecyclerView」の中心にスナップするようにしたいと思います。そのために、XMLレイアウトのRecyclerViewに大きなパディングを追加しました。それはスクロールを壊すようだ。スクロールを壊さずにRecyclerViewの中心に常にスナップする方法はありますか? –