我正在开发一个android应用程序,我正在使用RecyclerView。我需要在RecyclerView中添加一个分隔符。 我试着加上-

recyclerView.addItemDecoration(new
     DividerItemDecoration(getActivity(),
       DividerItemDecoration.VERTICAL_LIST));

下面是我的XML代码-

   <android.support.v7.widget.RecyclerView
    android:id="@+id/drawerList"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="15dp"
    />

当前回答

在2016年10月的更新中,支持库v25.0.0现在有了基本水平和垂直分隔符的默认实现!

https://developer.android.com/reference/android/support/v7/widget/DividerItemDecoration.html

 recyclerView.addItemDecoration(new DividerItemDecoration(recyclerView.getContext(), DividerItemDecoration.VERTICAL));

其他回答

所有这些答案都让我接近了答案,但它们都遗漏了一个关键细节。经过一番研究,我发现最简单的方法是将以下3个步骤结合起来:

使用支持库的DividerItemDecoration 用正确的颜色创建分隔线 在主题中设置这个分隔符为listDivider


步骤1:在配置RecyclerView时

recyclerView.addItemDecoration(
        new DividerItemDecoration(context, layoutManager.getOrientation()));

第二步:在res/drawable/divider_gray.xml这样的文件中

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <size android:width="1px" android:height="1px" />
    <solid android:color="@color/gray" />
</shape>

步骤3:在应用程序的主题

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Other theme items above -->
    <item name="android:listDivider">@drawable/divider_gray</item>
</style>

编辑:更新跳过最后的分隔符: 在使用了一些之后,我意识到它在最后一项之后画了一个分隔符,这很烦人。所以我修改了第1步,如下所示,以覆盖在DividerItemDecoration的默认行为(当然,制作一个单独的类是另一种选择):

recyclerView.addItemDecoration(
        new DividerItemDecoration(context, layoutManager.getOrientation()) {
            @Override
            public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
                int position = parent.getChildAdapterPosition(view);
                // hide the divider for the last child
                if (position == parent.getAdapter().getItemCount() - 1) {
                    outRect.setEmpty();
                } else {
                    super.getItemOffsets(outRect, view, parent, state);
                }
            }
        }
);

为了让nj的回答更简单一点,你可以这样做:

public class DividerColorItemDecoration extends DividerItemDecoration {

    public DividerColorItemDecoration(Context context, int orientation) {
        super(context, orientation);
        setDrawable(ContextCompat.getDrawable(context, R.drawable.line_divider));
    }
}

KOTLIN -如果你正在寻找自定义的颜色分割线之间的回收视图项目,那么这是一个解决方案,这是为我工作:

步骤1:给你的回收视图一个默认的项目装饰。recyclerView.addItemDecoration (androidx.recyclerview.widget。DividerItemDecoration(活动,androidx.recyclerview.widget.LinearLayoutManager.VERTICAL))

第二步: 添加一个xml绘图,指定你想要的颜色的大小宽度和高度。

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <size
        android:width="1dp"
        android:height="1dp" />
    <solid android:color="@color/your_color" />
</shape>

第三步:在你的应用主题中添加这一行。

<item name="android:listDivider">@drawable/your_drawable</item>

芬兰湾的科特林版:

recyclerview.addItemDecoration(DividerItemDecoration(this, LinearLayoutManager.VERTICAL))

我认为你是在使用Fragments来实现RecyclerView

在创建RecyclerView和LayoutManager对象后,只需添加这些行

DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(recyclerView.getContext(),
                DividerItemDecoration.VERTICAL);
        recyclerView.addItemDecoration(dividerItemDecoration);

就是这样!

它支持水平和垂直方向。