Recycler Просмотреть элементы с разной высотой с FlexboxLayoutManager
Как я могу отображать элементы повторного просмотра подряд, сохраняя их первоначальную высоту?
Я хочу использовать recycleviewer с FlexboxLayoutManager. Каждый элемент обычно имеет свою высоту в зависимости от их содержимого. Однако каждый элемент повторного просмотра в одной и той же строке всегда имеет одинаковую высоту.
Как я могу отображать элементы повторного просмотра подряд, сохраняя их первоначальную высоту?
Мне нужно, чтобы элементы отображались так:
Что я попробовал без успеха:
(Мелкие предметы всегда растягивается)
Мой код, где я установил менеджер раскладки:
adapter = new ProductAdapter(getContext(), productsList);
layoutManager.setFlexWrap(FlexWrap.WRAP);
layoutManager.setFlexDirection(FlexDirection.ROW);
// layoutManager.setAlignContent(AlignContent.CENTER);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(adapter);
Я пробовал это layoutManager.setAlignContent(AlignContent.CENTER);
Однако вы не можете установить alignContent
в FlexboxLayoutManager
для повторного просмотра. Сбой приложения, потому что 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));
2 ответа
Попробуйте что-то вроде этого как ваш RecyclerView
менеджер по верстке:
recycler.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));
По твоему имиджу думаю что тебе нужно StaggeredGridLayoutManager