RecyclerView 使用 FlexboxLayoutManager 的不同高度的项目

RecyclerView items with different heights with FlexboxLayoutManager

如何在保持原始高度的同时连续显示我的 recycleview 项目?

我想将回收查看器与 FlexboxLayoutManager 一起使用。 每个项目通常都有自己的高度,具体取决于它们的内容。 但是,同一行上的每个 recycleview 项目总是以某种方式以相同的高度结束。

如何在保持原始高度的同时连续显示我的 recycleview 项目?

我需要这样显示的项目:

我试过没有成功:

(小物件总是伸长的)

我设置布局管理器的代码:

        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); 但是,您不能在 FlexboxLayoutManager 中为回收查看器设置 alignContent。 应用程序崩溃,因为 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));

从你的图片来看我觉得你需要的是StaggeredGridLayoutManager

尝试像这样作为您的 RecyclerView 布局管理器:

recycler.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));