The question is solved by overriding RecyclerView.ItemDecoration.
In the adapter we change item's property on click and call notifyItemChanged for clicked card and its neighbour.
Then, we attach Decorator to RecylceView (before assigning adapter).
gridView = findViewById(R.id.gridview_words_titles);
gridView.addItemDecoration(new OverlapDecoration());
And, after that inside OverlapDecoration class we could make all the changes we need to overlap cards.
In my case, I just expand rectangle depends if it is right or left in pair.
View layout = view.findViewById(R.id.layout_words_full);
ViewGroup.LayoutParams params = layout.getLayoutParams();
params.width = (int) (width_px - 15 * scale);
And,
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);
}