2017-05-12 4 views
0

내 응용 프로그램은 LinearLayoutManagerLinearSnapHelper을 사용하여 RecyclerView을 사용합니다. 내 앱의 시작 부분에서 내 RecyclerView이 즉시 애니메이션없이 스냅 위치로 스크롤되기를 원합니다.바로 recyclerview

나는 RecyclerView.smoothScrollToPosition()을 알고 있지만 스크롤을 움직입니다. 어떤 아이디어가 이것을 달성하는 방법? 감사!

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 RecyclerView을 위해 :

<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

사용. 하지만 Linear 스냅 도우미가 센터에서 스냅하는 데 충분하다고 걱정됩니다.

+0

나는 그것을 시험해 보았지만, 그것은 나를 위해 정확한 스냅 위치 근처에서 스크롤하지도 않는다. 왜 그런지 알아? –

+0

여기에 코드를 게시하십시오. –

+0

왜 제대로 스크롤하지 않는지 알게되었습니다. 내 항목이 항상 'RecyclerView'의 중심에 맞추기를 원한다. 그리고 XML Layout의 RecyclerView에 거대한 패딩을 추가했다. 그건 스크롤을 깨는 것 같습니다. 어떻게하면 스크롤을 깨지 않고도 항상 RecyclerView의 중심에 스냅하는 것이 좋습니다. –