2016-01-14 9 views
6

Ich verwende eine RecyclerView, um Elemente horizontal anzuzeigen. Ich möchte das ausgewählte Element in der Mitte der Ansicht wie folgt setzenSo stellen Sie den Artikel in der Mitte der Recycler-Ansicht ein, wenn ausgewählt

enter image description here.

Dies ist, wie ich es tue: versuchen

LinearLayoutManager layoutManager 
       = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false); 
     recyclerView.setLayoutManager(layoutManager); 
+1

Bitte geben Sie einen Screenshot von dem, was Sie erreichen wollen und was Sie haben bisher – TejjD

+0

versuchen versucht, mit 'ViewPager' statt RecyclerView. –

+0

@Ravi hast du irgendeine Lösung dafür bekommen? –

Antwort

0

Bitte Art dieser Lösung:

LinearLayoutManager layoutManager = ((LinearLayoutManager)recyclerView.getLayoutManager()); 
int totalVisibleItems = layoutManager.findLastVisibleItemPosition() - layoutManager.findFirstVisibleItemPosition()  
int centeredItemPosition = totalVisibleItems/2; 
    recyclerView.smoothScrollToPosition(position); 
    recyclerView.setScrollY(centeredItemPosition); 

Hoffnung, das hilft.

+1

recycleview hat keine getLastVisiblePosition, getFirstVisiblePosition und smoothScrollByOffset ist in recyclerView nicht verfügbar. – ravi

+1

Dank Saeed aber, GetLastVisiblePosition und GetFirstVisiblePosition ist nicht in Recyclerview verfügbar. – ravi

+2

@ravi das sind 'LayoutManager' Methoden –

1

Dies ist für das Einrasten des Objekts in der Mitte beim Scrollen oder beim Klicken auf eine Ite.

Sie müssen einen SnapHelper zum RecyclerView hinzufügen. Hier ist, wie:

final RecyclerView recyclerViewObject = view.findViewById(R.id.recyclerViewObjectId); 

final LinearSnapHelper snapHelper = new LinearSnapHelper(); 
snapHelper.attachToRecyclerView(recyclerViewObject); 

recyclerViewObject.setOnFlingListener(snapHelper); 

dann nur Sie diesen Code nennen

recyclerViewObject.addOnItemTouchListener(
      new RecyclerItemClickListener(getContext(), recyclerViewObject ,new RecyclerItemClickListener.OnItemClickListener() { 
       @Override public void onItemClick(View view, int position) { 
        recyclerViewObject.smoothScrollToPosition(position); 
       } 

       @Override public void onLongItemClick(View view, int position) { 
       } 
      }) 
    ); 
Verwandte Themen