RecyclerПросмотреть элементы с разной высотой с FlexboxLayoutManager - PullRequest
0 голосов
/ 21 сентября 2018

Как я могу отображать мои элементы повторного просмотра подряд, сохраняя их первоначальную высоту?

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

Как я могу отображать элементы повторного просмотра в строке, сохраняя их первоначальную высоту?

Iнужно, чтобы элементы отображались так:

Correct one

То, что я пытался без успеха:

Fault one (мелкие элементы всегда растягиваются)

Мой код, в котором я установил менеджер раскладки:

        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));

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

Попробуйте что-то вроде этого в качестве менеджера макета RecyclerView:

recycler.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));
0 голосов
/ 21 сентября 2018

Из твоего изображения я думаю, что тебе нужно StaggeredGridLayoutManager

...