2016-01-14 2 views
6

Я использую RecyclerView для отображения элементов по горизонтали. Я хочу установить выбранный элемент в центр обзора, подобный этомуКак установить элемент в центр просмотра Recycler, если выбрано

enter image description here.

Это, как я это делаю:

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

Пожалуйста, предоставьте скриншот того, что вы хотите достичь, и что вы пробовали до сих пор – TejjD

+0

попробовать использовать 'ViewPager' вместо RecyclerView. –

+0

@ Ravi вы получили какое-то решение? –

ответ

0

Пожалуйста, попробуйте вид это решения:

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

Надеется, что это помогает.

+1

recyclerview не имеет getLastVisiblePosition, getFirstVisiblePosition и smoothScrollByOffset недоступен в recyclerView. – ravi

+1

Спасибо Saeed, но getLastVisiblePosition и getFirstVisiblePosition недоступны в recyclerview. – ravi

+2

@ravi - это методы 'LayoutManager' –

1

Это для привязки элемента в центре при прокрутке или при щелчке по ite.

Вам необходимо добавить SnapHelper в RecyclerView. Вот как:

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

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

recyclerViewObject.setOnFlingListener(snapHelper); 

, то вы просто назвать этот код

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) { 
       } 
      }) 
    ); 
Смежные вопросы