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

Другие вопросы по тегам