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
中获取了该值并将其应用于 ImageView
的 onMeasure
。
有点棘手,但完成了工作。 2 个单元格 space,但一个单元格大小且最重要,位于中心。
问题有点奇怪。我有一个 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
中获取了该值并将其应用于 ImageView
的 onMeasure
。
有点棘手,但完成了工作。 2 个单元格 space,但一个单元格大小且最重要,位于中心。