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

时间:2017-10-03 12:53:05

标签: android android-recyclerview gridlayoutmanager

这个问题有点奇怪。我有GridLayoutmanagerRecyclerview相关联,此Grid有两行5行,另外两列,每隔一行的大小为2列。

CELL1-CELL2
C  E L L  3
CELL4-CELL5

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

我有一个方形的Linearlayout,代码如下:

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的项目,因此每个单元格都具有完美的宽度和高度,除了第三个单元格,因为它具有两个单元格的大小。这是我的问题,我希望它占用两个单元格的空间,但不是两个单元格的大小。

1 个答案:

答案 0 :(得分:0)

所以我做了一个无用的技巧。我创建了两个自定义视图,一个用于LinearLayout,另一个用于ImageView。在LinearLayout中,我将widthMeasureSpec保存在另一个名为Constants的类中的静态常量中,并添加了boolean以仅保存一次值。

<{1>}中的

,我从ImageView获取了该值并将其应用于Constants的{​​{1}}。

有点棘手,但做了工作。 2细胞空间,但一个细胞大小,最重要的是,在中心。