как удалить разделитель между элементами Recyclerview в Android

я хочу удалить разделитель (пробел) между элементами RecyclerView

Итак, попробуйте установить background в представлении элемента, а RecyclerView на White, но это не работает, как это исправить?

Вид элемента XML :

<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="@android:color/white"
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="match_parent">
    <LinearLayout
        android:background="@android:color/white"
        android:paddingLeft="@dimen/footer_item_padding"
        android:paddingRight="@dimen/footer_item_padding"
        android:orientation="vertical"
        android:gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="match_parent">
        <ImageView
            android:id="@+id/img_avatar_category_item_adapter"
            android:contentDescription="@string/app_name"
            android:adjustViewBounds="true"
            android:scaleType="fitXY"
            android:layout_width="@dimen/image_width_category_adapter"
            android:layout_height="wrap_content"/>
    </LinearLayout>
</android.support.v7.widget.CardView>

XML активности:

        <android.support.v7.widget.RecyclerView
            android:id="@+id/rv_categories_main_activity"
            android:background="@android:color/white"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>

Activity Класс:

    rv_categories.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
    rv_categories.setItemAnimator(new DefaultItemAnimator());

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


person Hossein Kurd    schedule 04.12.2015    source источник
comment
удалить android:paddingLeft=@dimen/footer_item_padding android:paddingRight=@dimen/footer_item_padding   -  person tiny sunlight    schedule 04.12.2015


Ответы (6)


Сначала определите свой RecyclerView :

RecyclerView recycle = (RecyclerView) findViewById (R.id.recyclerView);

и в своей деятельности используйте этот метод:

recycle.addItemDecoration(new DividerItemDecoration(context, 0));
person nima barati    schedule 05.11.2017
comment
мы не можем удалить его в XML напрямую? - person zulkarnain shah; 25.10.2018
comment
это установит разделитель горизонтально, но не удалит разделитель полностью - person Roberto; 25.11.2018

Вы можете использовать класс DividerItemDecoration и переопределить его метод onDraw, чтобы ничего подобного не делать:

mRecyclerView.addItemDecoration(new DividerItemDecoration(mContext, LinearLayoutManager.VERTICAL) {
        @Override
        public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
            // Do not draw the divider
        }
    });
person Sevastyan Savanyuk    schedule 10.03.2017
comment
Наконец-то я нашел решение :D - person Tefa; 19.08.2017
comment
Что, если мы хотим рисовать для определенных строк, но не для других? - person lostintranslation; 23.02.2018
comment
@lostintranslation Я предлагаю вам использовать метод getChildAt() для RecyclerView, чтобы сделать видимым View. Затем вызовите getChildAdapterPosition() с View, полученным на предыдущем шаге, в качестве параметра. Затем, судя по полученному значению позиции, вы применяете свою логику для рисования для этого конкретного вида. Что перейти на getChildAt()? Я полагаю, что создание цикла while от 0 до тех пор, пока этот метод не вернет null, поможет. - person Sevastyan Savanyuk; 24.02.2018

Не используйте строку кода ниже в своем коде, это решает проблему

productRecyclerView.addItemDecoration (новый DividerItemDecoration (getActivity(), LinearLayoutManager.HORIZONTAL));

or

recycle.addItemDecoration (новый DividerItemDecoration (контекст, 0));

person Kishore Reddy    schedule 27.03.2018
comment
Только удаление кода будет работать. Установка на 0 не удалит разделитель. Я тестировал. - person Christopher Smit; 06.04.2018
comment
Это отвечает на вопрос. Он должен быть отмечен. - person Muhammad Faheem Mohd Ezani; 29.10.2019

По какой-то причине другие ответы не сработали для меня, но этот обходной путь сработал:

for (int i = 0; i < recyclerView.getItemDecorationCount(); i++) {
    if (recyclerView.getItemDecorationAt(i) instanceof DividerItemDecoration)
        recyclerView.removeItemDecorationAt(i);
}
person einUsername    schedule 01.11.2020

Добавлять

android:divider="@null"
android:dividerHeight="0dp"

в recyclerView xml.

person loic .B    schedule 04.03.2020

Проблема из-за CardView.

Установите setPreventCornerOverlap(false) в вашем CardView.

ИЛИ

Добавить строку ниже в макете

<android.support.v7.widget.CardView
 xmlns:card_view="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="@android:color/white"
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="match_parent">

Используйте тег ниже

card_view:cardPreventCornerOverlap="false"
card_view:cardUseCompatPadding="true"
person Android Team    schedule 04.12.2015