2017-05-12 10 views
0

私のアプリは、LinearLayoutManagerLinearSnapHelperRecyclerViewを使用しています。 私のアプリの初めに、私の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); 

答えて

0

使用。しかし、私はリニアスナップヘルパーが中央でスナップするのに十分であることを心配しています。

+0

私はそれを試みましたが、それは私のために正確なスナップ位置の近くにスクロールしません。なぜなのかご存知ですか? –

+0

ここにあなたのコードを投稿してください –

+0

私はそれが正しくスクロールしない理由を知ったと思います。私は自分のアイテムを常に「RecyclerView」の中心にスナップするようにしたいと思います。そのために、XMLレイアウトのRecyclerViewに大きなパディングを追加しました。それはスクロールを壊すようだ。スクロールを壊さずにRecyclerViewの中心に常にスナップする方法はありますか? –

関連する問題