如何添加分隔线在RecyclerView android系统中? [英] how to add divider line in RecyclerView in android?

查看:527
本文介绍了如何添加分隔线在RecyclerView android系统中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我开发一个Android应用程序,其中我使用 RecyclerView 。我需要添加一个 RecyclerView 。 我搜索了很多,但没有找到任何合适的回答。我尝试添加 -

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

下面是我的xml code -

 < android.support.v7.widget.RecyclerView
    机器人:ID =@ + ID / drawerList
    机器人:layout_width =match_parent
    机器人:layout_height =WRAP_CONTENT
    机器人:layout_marginTop =15dp
    />
 

解决方案

正确的方法是定义 ItemDecoration RecyclerView 是如下

SimpleDividerItemDecoration.java

 公共类SimpleDividerItemDecoration扩展RecyclerView.ItemDecoration {
    私人绘制对象mDivider;

    公共SimpleDividerItemDecoration(上下文的背景下){
        mDivider = context.getResources()getDrawable(R.drawable.line_divider)。
    }

    @覆盖
    公共无效onDrawOver(帆布C,RecyclerView父母,RecyclerView.State州){
        INT左= parent.getPaddingLeft();
        INT右= parent.getWidth() -  parent.getPaddingRight();

        INT childCount = parent.getChildCount();
        的for(int i = 0; I< childCount;我++){
            查看孩子= parent.getChildAt(我);

            RecyclerView.LayoutParams PARAMS =(RecyclerView.LayoutParams)child.getLayoutParams();

            INT顶= child.getBottom()+ params.bottomMargin;
            INT底=顶部+ mDivider.getIntrinsicHeight();

            mDivider.setBounds(左,上,右,下);
            mDivider.draw(C);
        }
    }
}
 

line_divider.xml:

 < XML版本=1.0编码=UTF-8&GT?;
<形状的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    机器人:形状=矩形>

    <大小
        机器人:宽=1DP
        机器人:身高=1DP/>

    [固体机器人:颜色=@色/ dark_gray/>

< /形状>
 

最后这样设置

  recyclerView.addItemDecoration(新SimpleDividerItemDecoration(本));
 

I am developing an android application where I am using RecyclerView. I need to add a divider in RecyclerView. I search a lot but did not find any proper answer. I tried to add -

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

below is my xml code -

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

解决方案

The Right way is to define ItemDecoration for the RecyclerView is as following

SimpleDividerItemDecoration.java

public class SimpleDividerItemDecoration extends RecyclerView.ItemDecoration {
    private Drawable mDivider;

    public SimpleDividerItemDecoration(Context context) {
        mDivider = context.getResources().getDrawable(R.drawable.line_divider);
    }

    @Override
    public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {
        int left = parent.getPaddingLeft();
        int right = parent.getWidth() - parent.getPaddingRight();

        int childCount = parent.getChildCount();
        for (int i = 0; i < childCount; i++) {
            View child = parent.getChildAt(i);

            RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();

            int top = child.getBottom() + params.bottomMargin;
            int bottom = top + mDivider.getIntrinsicHeight();

            mDivider.setBounds(left, top, right, bottom);
            mDivider.draw(c);
        }
    }
}

line_divider.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <size
        android:width="1dp"
        android:height="1dp" />

    <solid android:color="@color/dark_gray" />

</shape>

Finally set it like this

recyclerView.addItemDecoration(new SimpleDividerItemDecoration(this));

这篇关于如何添加分隔线在RecyclerView android系统中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆