【问题标题】:RecyclerView items with different heights with FlexboxLayoutManager使用 FlexboxLayoutManager 来查看不同高度的 RecyclerView 项目
【发布时间】:2018-09-20 23:06:08
【问题描述】:

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

我想使用带有 FlexboxLayoutManager 的 recycleviewer。 每个项目通常都有自己的高度,具体取决于它们的内容。 但是,同一行上的每个 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));

【问题讨论】:

  • 参考此Link 将帮助您归档您想要的设计
  • 那没有办法用 FlexboxLayoutManager 做到这一点?

标签: android android-recyclerview android-flexboxlayout


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    从你的图片我认为你需要的是StaggeredGridLayoutManager

    【讨论】:

      猜你喜欢
      • 2018-10-24
      • 1970-01-01
      • 2018-02-12
      • 2020-04-17
      • 2019-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多