GridLayoutmanager 使项目占用 2 个单元格 space,但具有一个单元格的大小

GridLayoutmanager make item take 2 cells space, but have one cell's size

问题有点奇怪。我有一个 GridLayoutmanager 链接到一个 Recyclerview,这个 Grid 有两个 5 行和 2 列,每隔一行有 2 列的大小。

CELL1-CELL2
C  E L L  3
CELL4-CELL5

第二行有一个大小为两个单元格的单元格。这一步,我已经完成了,没有任何问题,现在应我的要求。

我有一个正方形的线性布局,代码如下:

public class SquareLinearLayout extends LinearLayout {


public SquareLinearLayout(Context context) {
    super(context);
}

public SquareLinearLayout(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public SquareLinearLayout(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}

@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    //noinspection SuspiciousNameCombination
    super.onMeasure(widthMeasureSpec, widthMeasureSpec);
}

}

我已将此布局应用于 Grid 的项目,因此每个单元格都有完美的宽度和高度,除了第 3 个单元格,因为它有两个单元格的大小。这是我的问题,我希望它采用两个单元格的 space,而不是两个单元格的大小。

所以我做了一个小把戏来做到这一点。我创建了两个自定义视图,一个用于 LinearLayout,一个用于 ImageView。在 LinearLayout 中,我将 widthMeasureSpec 保存在另一个名为 Constants 的 class 中的静态常量中,并添加了一个 boolean 以仅保存值 1时间。

ImageView 中,我从 Constants 中获取了该值并将其应用于 ImageViewonMeasure

有点棘手,但完成了工作。 2 个单元格 space,但一个单元格大小且最重要,位于中心。