具有水平扩展卡的RecycleView 2列

时间:2019-06-25 17:25:03

标签: android android-layout android-recyclerview expandablerecyclerview

我正在寻找如何使用recycleview和布局管理器来实现这一点,如屏幕截图所示。

具有2列(相同大小)的网格。单击重叠其水平邻居可以扩展每个卡。并通过单击将其折叠回其原始状态。

enter image description here enter image description here

1 个答案:

答案 0 :(得分:0)

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

然后,将装饰器附加到RecylceView(在分配适配器之前)。

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

然后,在OverlapDecoration类中之后,我们可以进行所有需要重叠的卡片更改。 就我而言,我只是展开矩形取决于它是成对的。

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);
}