Android给RecyclerView添加分割线的具体步骤(分享)

  

【吐槽】RecyclerView没有提供分割线的方法,想要加个线还要自己画,点击事件的监听都要自己实现,不过真的好用。

  

  

        公共静态抽象类ItemDecoration {      公共空间>   公共类DividerItemDecoration RecyclerView延伸。ItemDecoration {//使用系统自带的listDivider   私有静态最终int [] ATTRS=new int [] {   android.R.attr.listDivider   };      私人可拉的mDivider;      公共DividerItemDecoration(上下文语境){   超级();//从TypedArray中得到一个可拉的对象   最后TypedArray TypedArray=context.obtainStyledAttributes (ATTRS);   mDivider=typedArray.getDrawable (0);      typedArray.recycle ();   }      @Override   公共空间onDraw(帆布c, RecyclerView家长,RecyclerView。状态状态){   超级。onDraw (c、父母、状态);   drawDivider (c,父);   }/* *   *遍历childView,为每一个childView描绘分配器   * @param c画布对象   * @param父母父控件即RecyclerView   */私人空间drawDivider(帆布c, RecyclerView父母){//获取分割线的上边距,即RecyclerView的填充值   最后int顶级=parent.getPaddingTop ();//分割线下边距   最后一个int底部=parent.getHeight ()——parent.getPaddingBottom ();      最后一个int childCount=parent.getChildCount ();//遍历所有项目视图,为它们的右边方绘制分割线,就是计算出上下左右四个值画一个矩形   for (int i=0;我& lt;childCount;我+ +){   最后查看孩子=parent.getChildAt(我);   最后RecyclerView。LayoutParams params=(RecyclerView.LayoutParams) child.getLayoutParams ();   最终int=child.getRight () + params.rightMargin;   最后一个int右=左+ mDivider.getIntrinsicWidth ();//画右边的分频器   mDivider。setBounds(左,上,右,下);   mDivider.draw (c);//画完右边画底边   child.getPaddingLeft mDivider.setBounds (child.getLeft () + (), child.getBottom () + params.bottomMargin,   child.getRight ()——child.getPaddingRight (), child.getBottom mDivider.getIntrinsicHeight () + ());   mDivider.draw (c);   }   }      @Override   观点看来,公共空间getItemOffsets(矩形outRect RecyclerView母公司RecyclerView。状态状态){   超级。getItemOffsets (outRect、视图、父母、状态);   outRect。集(0,0,mDivider.getIntrinsicHeight (), mDivider.getIntrinsicHeight ());   }   }      

  

mRecyclerView。addItemDecoration(新DividerItemDecoration ());

  

  

其实从RecyclerView。ItemDecoration的名字就看得出来,它是RecyclerView的物品的装饰品,也就是说,除了画分割线,想画什么都是可以的。

  

以上这篇Android给RecyclerView添加分割线的具体步骤(分享)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

Android给RecyclerView添加分割线的具体步骤(分享)