RecycleView 2 列带水平扩展卡

RecycleView 2 columns with horizontally expandable card

我正在寻找如何使用 recycleview 和布局管理器实现这一点,就像屏幕截图中那样。

具有 2 列的网格(相同大小)。每张卡片都可以通过单击重叠其水平邻居来展开。单击它会恢复到原来的状态。

问题已通过覆盖 RecyclerView.ItemDecoration 解决。 在适配器中,我们在单击时更改项目的 属性 并为单击的卡片及其邻居调用 notifyItemChanged。

然后,我们将 Decorator 附加到 RecylceView(在分配适配器之前)。

gridView = findViewById(R.id.gridview_words_titles);
gridView.addItemDecoration(new OverlapDecoration());

然后,在 OverlapDecoration class 内部之后,我们可以进行重叠卡片所需的所有更改。 在我的例子中,我只是扩展矩形取决于它是成对的还是左的。

View layout = view.findViewById(R.id.layout_words_full);
ViewGroup.LayoutParams params = layout.getLayoutParams();
params.width = (int) (width_px - 15 * scale);

而且,

int horizOverlap;

if (itemPosition % 2 == 0) {
    horizOverlap = (int) ((width_px - 20 * scale) / 2);
    outRect.set(-horizOverlap, 0, 0, 0);
} else {
    horizOverlap = (int) ((width_px - 5 * scale) / 2);
    outRect.set(0, 0, -horizOverlap, 0);
}