【问题标题】:Different (dynamic) items height in GridLayoutManagerGridLayoutManager 中的不同(动态)项目高度
【发布时间】:2016-04-30 22:39:27
【问题描述】:

我有一个包含 2 列的 RecyclerView 和 GridLayoutManager。 如何强制 LayoutManager 与第一个屏幕截图上的模板一致?现在我得到了第二张截图的结果。

需要结果:

当前结果:

【问题讨论】:

    标签: android height android-recyclerview rows gridlayoutmanager


    【解决方案1】:

    GridLayoutManager 将使用网格,您可以设置一些跨度,但不能为不同的单元格设置不同的高度。

    你想要的是StaggeredGridLayoutManager。如果它们适合,这只会将项目放在屏幕上,从而产生您需要的结果。如果需要,您还可以使用 setGapStrategy 更改重新排序行为。

    【讨论】:

    • "但不同单元格的高度不同。"不过,您可以设置不同的行高;例如,每个单元格都有高度设置为 wrap_content 的图像视图,并且在每个单元格中设置了不同的图像,那么每一行将采用最大图像的高度
    • 如何实现垂直交错网格布局项目的水平动态大小?或者换句话说,假设我在交错网格布局中有 2 列。我可以动态更改列宽吗?
    【解决方案2】:

    这真的很容易。您必须将此管理器添加到 RecycleView:

    recyclerView.setLayoutManager(new StaggeredGridLayoutManager(mColumnCount, 1));
    

    就我而言,它看起来像这样:

    Context context = view.getContext();
    RecyclerView recyclerView = (RecyclerView) view;
    
    if (mColumnCount <= 1) {
        recyclerView.setLayoutManager(new LinearLayoutManager(context));
    } else {
        recyclerView.setLayoutManager(new StaggeredGridLayoutManager(mColumnCount, 1));
    }
    recyclerView.setAdapter(new MyItemRecyclerViewAdapter(DummyContent.ITEMS, mListener));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多