我已经阅读了很多类似的文章,但仍然没有找到答案如何知道视图持有者是左还是右RecyclerView
。StaggeredGridLayoutManager
情况:我有RecyclerView
StaggeredGrid 并且想做填充
8 dp [left view] 8 dp [right view] 8 dp
所以因为我不能在 XML 中做到这一点,所以我必须添加一些边距 -
对于左视图:左边距 8dp,右边距 4dp
对于右视图:左边距 4dp,右边距 8dp
通常视图是这样放置的:
[0][1]
[2][3]
[4][5]
所以最简单的解决方案是尝试按位置确定它:
override fun onBindViewHolder(ViewHolder holder, int position) {
...
val params = holder.cardView.layoutParams as FrameLayout.LayoutParams
if (position % 2 == 0) {
params.leftMargin = pxFromDp(context, 8f).toInt()
params.rightMargin = pxFromDp(context, 4f).toInt()
}
if (position % 2 == 1) {
params.rightMargin = pxFromDp(context, 8f).toInt()
params.leftMargin = pxFromDp(context, 4f).toInt()
}
params.bottomMargin = pxFromDp(context, 2f).toInt()
params.topMargin = pxFromDp(context, 6f).toInt()
holder.cardView.layoutParams = params
...
}
这行得通,但是如果视图 2 的高度小于视图 1,它们就会被放置
[0][1]
[3][2]
[5][4]
所以它不起作用。
我怎么知道是左视图还是右视图?