Маржа между элементами просмотра recycler Android

Привет, я следую этому руководству

http://www.journaldev.com/10024/androidrecyclerview-and-cardview-example-tutorial

Теперь я столкнулся с странной проблемой, разница между каждым элементом карты в обзоре recycler слишком велика.

ВОПРОС

Как уменьшить маржу между каждым элементом карты, размещенным внутри вида ресайклера.

Введите описание изображения здесь

Я столкнулся с аналогичной проблемой, с RelativeLayout в качестве корневого элемента для каждой строки в recyclerview.

Чтобы решить эту проблему, найдите файл xml, который содержит каждую строку, и убедитесь, что высота корневого элемента – wrap_content NOT match_parent .

  1. Найдите атрибут card_view:cardUseCompatPadding="true" в card_layout.xml и удалите его. Запустите приложение, и вы обнаружите, что между каждым элементом карты нет поля.

  2. Добавьте атрибуты полей, которые вам нравятся. Пример:

     android:layout_marginTop="5dp" android:layout_marginBottom="5dp" 

Я создал класс для решения этой проблемы. Этот класс устанавливает разные поля для элементов внутри recyclerView: только первая строка будет иметь верхнее поле, и только первый столбец будет иметь левый край.

 public class RecyclerViewMargin extends RecyclerView.ItemDecoration { private final int columns; private int margin; /** * constructor * @param margin desirable margin size in px between the views in the recyclerView * @param columns number of columns of the RecyclerView */ public RecyclerViewMargin(@IntRange(from=0)int margin ,@IntRange(from=0) int columns ) { this.margin = margin; this.columns=columns; } /** * Set different margins for the items inside the recyclerView: no top margin for the first row * and no left margin for the first column. */ @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { int position = parent.getChildLayoutPosition(view); //set right margin to all outRect.right = margin; //set bottom margin to all outRect.bottom = margin; //we only add top margin to the first row if (position <columns) { outRect.top = margin; } //add left margin only to the first column if(position%columns==0){ outRect.left = margin; } } 

}

Вы можете установить его в своем recyclerview таким образом

  RecyclerViewMargin decoration = new RecyclerViewMargin(itemMargin, numColumns); recyclerView.addItemDecoration(decoration); 

Вместо того, чтобы использовать XML для добавления поля между элементами в RecyclerView, лучше использовать RecyclerView.ItemDecoration, предоставляемые инфраструктурой Android.

Итак, я создаю библиотеку для решения этой проблемы.

https://github.com/TheKhaeng/recycler-view-margin-decoration

Введите описание изображения здесь

Попробуйте добавить RecyclerView.ItemDecoration

Чтобы узнать, как это сделать: как добавить разделители и пробелы между элементами в RecyclerView?

Изменение в представлении Recycler match_parent для wrap_content :

 <android.support.v7.widget.RecyclerView android:id="@+id/recycleView" android:layout_width="match_parent" android:layout_height="wrap_content" /> 

Также измените расположение элементов xml

Сделать родительский макет высотой match_parent для wrap_content

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" /> 

Если вы хотите сделать это в XML , jus set paddingTop и paddingLeft для вашего RecyclerView и равного количества layoutMarginBottom и layoutMarginRight для элемента, который вы надуваете в свой RecyclerView (или наоборот).

Intereting Posts
Как получить ряд строк в Android? Как сделать listFooter недоступным для просмотра Почему какой-то код Android имеет общедоступные поля? Приложение не совместимо с устройством, которое я использую для его разработки? Android Camera.takePicture () не возвращается несколько раз? Ошибка Android SQLIte: не удалось прочитать строку 0, col 1 из CursorWindow Что касается ошибки режима GPU при запуске виртуального устройства Android Я хочу получить profilepicture whatsApp, но только получить имя и контактную информацию? Хорошие альтернативы для совместного использования сложного дерева объектов между действиями в Android? Как реализовать держатель вида? Android: сделать папку на внешней памяти частной или защищенной Java.lang.NullPointerException com.google.android.gms.analytics.w $ b.run E / SelfBrailleClient (11344): не удалось привязать к сервису Компонентные объекты в интерфейсах Котлина Есть ли способ скрыть систему / панель навигации в Android ICS