Как я могу отображать мои элементы повторного просмотра подряд, сохраняя их первоначальную высоту?
Я хочу использовать средство повторного просмотра с FlexboxLayoutManager.Каждый элемент обычно имеет свою высоту в зависимости от их содержимого.Однако каждый элемент повторного просмотра в одной и той же строке всегда так или иначе заканчивается одинаковой высотой.
Как я могу отображать элементы повторного просмотра в строке, сохраняя их первоначальную высоту?
Iнужно, чтобы элементы отображались так:
То, что я пытался без успеха:
(мелкие элементы всегда растягиваются)
Мой код, в котором я установил менеджер раскладки:
adapter = new ProductAdapter(getContext(), productsList);
layoutManager.setFlexWrap(FlexWrap.WRAP);
layoutManager.setFlexDirection(FlexDirection.ROW);
// layoutManager.setAlignContent(AlignContent.CENTER);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(adapter);
Я пробовалthis layoutManager.setAlignContent(AlignContent.CENTER);
Однако вы не можете установить alignContent
в FlexboxLayoutManager
для recycleviewer.Сбой приложения, потому что alignContent
для FlexboxLayout
(не менеджер).
РЕДАКТИРОВАНИЕ: При использовании StaggeredGridLayoutManager
это решит проблему.Однако вы потеряете отзывчивое поведение FlexboxLayoutManager.
Я создал собственное адаптивное поведение для StaggeredGridLayoutManager:
DisplayMetrics displayMetrics = getActivity().getResources().getDisplayMetrics();
float dpWidth = displayMetrics.widthPixels / displayMetrics.density;
int spanCount = (int) (dpWidth / 222); // 222=total space for 1 item incl. margin
recyclerView.setLayoutManager(new StaggeredGridLayoutManager(spanCount, StaggeredGridLayoutManager.VERTICAL));