首页 > 解决方案 > 垂直 GridLayoutManager 中的动态子宽度

问题描述

我有一张要在 RecyclerView 中显示的表格。目前我正在使用垂直方向的 GridLayoutManager。由于我所有的逻辑都依赖于 GridLayoutManager 的垂直方向,因此我无法切换到水平方向或 StaggeredLayoutManager。有没有办法改变 RecyclerView 子项度量,以便每行的第一个单元格可以有不同的宽度?

在此处输入图像描述

标签: androidandroid-recyclerviewgridlayoutmanager

解决方案


我建议您使用SpanSizeLookup

像这样的东西:

GridLayoutManager manager = new GridLayoutManager(context, 2);
 manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
    @Override
    public int getSpanSize(int position) {
        switch(adapter.getItemViewType(position)) {
            // first cell type
            case 1:
                return 1;
            default:
                return 2;
        }
    }
});

在您的适配器中,您应该getItemViewType为您的单元格覆盖并返回不同的类型。


推荐阅读