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

时间:2018-09-20 23:06:08

标签: android android-recyclerview android-flexboxlayout

如何在保持其原始高度的同时连续显示回收视图项目?

我想将Recycleviewer与FlexboxLayoutManager一起使用。 每个项目通常根据其内容都有自己的高度。 但是,同一行上的每个recycleview项目总是以某种高度结尾。

如何在尊重回收站原始高度的同时连续显示回收站视图项目?

我需要这样显示项目:

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

我已经尝试过此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 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

根据您的图片,我认为您需要的是StaggeredGridLayoutManager