RecycleView 2 колонки с горизонтально расширяемой картой - PullRequest
0 голосов
/ 25 июня 2019

Я ищу, как реализовать это с помощью recycleview и менеджера компоновки, как на скриншотах.

Сетка с 2 столбцами (одинакового размера).Каждая карта может быть расширена путем щелчка, перекрывающего ее горизонтального соседа.И по щелчку он вернется в исходное состояние.

enter image description here enter image description here

1 Ответ

0 голосов
/ 28 июня 2019

Вопрос решается переопределением RecyclerView.ItemDecoration. В адаптере мы меняем свойство элемента по клику и вызываем notifyItemChanged для кликаемой карты и ее соседа.

Затем мы присоединяем Decorator к 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);
}
...