2016-01-14 10 views
6

Sto usando un RecyclerView per visualizzare gli elementi orizzontalmente. Voglio impostare l'elemento selezionato al centro della vista come questoCome impostare l'elemento sul centro della vista Recycler quando selezionato

enter image description here.

Questo è come lo faccio:

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

Si prega di fornire uno screenshot di ciò che si vuole ottenere e ciò che avete provato finora – TejjD

+0

provare a utilizzare 'ViewPager' invece di RecyclerView. –

+0

@Ravi hai trovato qualche soluzione per questo? –

risposta

0

Si prega di provare una sorta di questa soluzione:

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

Spero che questo aiuti.

+1

recyclerview non ha getLastVisiblePosition, getFirstVisiblePosition e smoothScrollByOffset non è disponibile in recyclerView. – ravi

+1

Grazie Saeed ma, getLastVisiblePosition e getFirstVisiblePosition non è disponibile in recyclerview. – ravi

+2

@ravi quelli sono metodi 'LayoutManager' –

1

Questo è per lo snap all'elemento al centro durante lo scorrimento o quando si fa clic su un ite.

È necessario aggiungere SnapHelper a RecyclerView. Ecco come:

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

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

recyclerViewObject.setOnFlingListener(snapHelper); 

poi basta chiamare questo codice

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) { 
       } 
      }) 
    ); 
Problemi correlati