StaggeredGridLayoutManager: при добавлении Margin элементы макета отодвигаются в сторону.

Итак, я работаю над небольшим проектом и хотел добавить StaggeredGridLayoutManager в файл. Хотя это работает, если я не добавляю itemDecorator и не добавляю margin или padding в свои макеты. Как только я добавляю поля, он сдвигает список в одну сторону. Я прилагаю снимок экрана, чтобы прояснить проблему.введите здесь описание изображения



Вот мой код:

recyclerView.setHasFixedSize(true);
    StaggeredGridLayoutManager gridLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
    recyclerView.addItemDecoration(new EqualSpaceItemDecoration(8));
    recyclerView.setLayoutManager(gridLayoutManager);
    recyclerView.setAdapter(adapter);

И файл макета для элемента

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:orientation="vertical">
  <android.support.v7.widget.CardView
    android:id="@+id/wallpaper_item_card"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:cardBackgroundColor="@color/cardview_light_background"
    app:cardCornerRadius="4dp"
    app:cardElevation="4dp"
    app:cardPreventCornerOverlap="false">

    <ImageView
      android:id="@+id/wallpaper_item_image"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"/>

  </android.support.v7.widget.CardView>
</LinearLayout>

Я огляделся в течение некоторого времени и не могу найти что-то, что устраняет проблемы. Любая помощь приветствуется. Спасибо.


person Harman Kamboj    schedule 12.09.2018    source источник


Ответы (2)


Я не знаю, нашли ли вы уже решение, но я оставлю комментарий на случай, если кто-то еще увидит вопрос.

Я смог решить эту проблему, выполнив следующие действия:

layoutManager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_NONE);

Пример:

StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);          
layoutManager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_NONE);
RecyclerView recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(layoutManager);
person Esteban    schedule 20.12.2018
comment
Спасибо, я на самом деле не решил это и пошел на некоторые альтернативные проекты. Но теперь, когда я знаю, как это исправить. Собственно могу дать вариант компоновки. Спасибо - person Harman Kamboj; 22.12.2018

В котлине используйте:

viewManager.gapStrategy = StaggeredGridLayoutManager.GAP_HANDLING_NONE
person zedlabs    schedule 28.07.2019