Android recycle view, как просмотр галереи?

Я пытаюсь создать recycleview, который работает точно так же, как вид галереи, где, когда вы прокручиваете по горизонтали, он заблокирует текущий просмотренный объект как в виде галереи?

Это возможно?

До сих пор я создал мой recycleView и использовал LinearLayoutManager, установленный как Horizontal, чтобы он прокручивал горизонтально (отлично работает), но как заблокировать текущий элемент, как в виде галереи?

recyclerView = (RecyclerView) view.findViewById(R.id.recycleView); MyAdapter adapter = new MyMapAdapter(); recyclerView.setAdapter(adapter); RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getActivity().getApplicationContext(), LinearLayoutManager.HORIZONTAL, false); recyclerView.setLayoutManager(mLayoutManager);
2 ответа

RecyclerView предоставляет эти встроенные менеджеры макетов:

  • LinearLayoutManager показывает элементы в списке вертикальной или горизонтальной прокрутки.
  • GridLayoutManager показывает элементы в сетке.
  • StaggeredGridLayoutManager показывает элементы в шахматном порядке.

Источник: https://developer.android.com/training/material/lists-cards.html#RecyclerView

GridLayoutManager:

GridLayoutManager mLayoutManager = new GridLayoutManager(this, 4); // (Context context, int spanCount) mRecyclerView.setLayoutManager(mLayoutManager);

StaggeredGridLayoutManager:

StaggeredGridLayoutManager mLayoutManager = new StaggeredGridLayoutManager(4, StaggeredGridLayoutManager.VERTICAL); // (int spanCount, int orientation) mRecyclerView.setLayoutManager(mLayoutManager);


У меня такая же проблема. И это то, что я сделал, я добавил OnScrollListener в свой RecyclerView:

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); if (newState == RecyclerView.SCROLL_STATE_IDLE) { recyclerView.scrollToPosition(getScrolledPosition()); galleryAdapter.highlightItem(getMidPosition()); } }

и метод scrollToPosition выглядит следующим образом:

private int getScrolledPosition() { return (int) ((******) recyclerView.computeHorizontalScrollOffset() / (******) galleryAdapter.getItemWidth());
}

getMidPosition:

private int getMidPosition() { return getScrolledPosition() + (GalleryAdapter.ITEM_NUM / 2);
}

GalleryAdapter - это мой adpater, который простирается от RecyclerView.Adapter. Таким образом я выделил центральный элемент. Проблема в том, что когда я перетаскиваю или перебрасываю recycliewiew, текущий центральный элемент не будет выделен. Он работает только в том случае, если представление перестает прокручиваться.

licensed under cc by-sa 3.0 with attribution.