如何在android中删除Recyclerview项目之间的分隔符

时间:2015-12-04 12:33:54

标签: android android-recyclerview divider

我想删除RecyclerView项目之间的分隔符(空格)

因此,请尝试将项目视图backgroundRecyclerView设置为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());

enter image description here

7 个答案:

答案 0 :(得分:12)

  

首先定义您的RecyclerView:

     

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

     

并在您的活动中使用此方法:

recycle.addItemDecoration(new DividerItemDecoration(context, 0));

答案 1 :(得分:7)

您可以使用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
        }
    });

答案 2 :(得分:2)

添加

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

到recyclerView xml。

答案 3 :(得分:1)

不要在代码中使用下面的代码行,它解决了iisue

groceryRecyclerView.addItemDecoration(new DividerItemDecoration(getActivity(),LinearLayoutManager.HORIZONTAL));

recycle.addItemDecoration(new DividerItemDecoration(context,0));

答案 4 :(得分:1)

由于某种原因,其他答案对我不起作用,但是此解决方法确实起作用:

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

答案 5 :(得分:0)

  

问题在于CardView。

在CardView上设置setPreventCornerOverlap(false)。

在布局中添加以下行

<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"

答案 6 :(得分:0)

在某些相关属性中,也可以是海拔高度