上一篇 Android RecycleView(一)完成了最最基本的recycleview的用法 这一篇,完成其分割线的设置。

recycleview 有其自己设置分割线的方法:recyclerView.addItemDecoration() 参数是我们自己定义的一个ItemDecoration通过自定义itemDecoration

我们可以根据自己的喜好来自定义分割线的样式,无论是color还是图片,或者自定义的shape。

自定义itemDecoration:

继承系统提供的RecyclerView.ItemDecoration重写onDraw或onDrawOver方法   一个实在childitem之前绘制一个是在childitem之后绘制。

package com.chs.myrecycleview.adapter;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.graphics.Rect;import android.graphics.drawable.Drawable;import android.support.v7.widget.RecyclerView;import android.view.View;import com.chs.myrecycleview.R;/** * 作者:chs on 2016/2/2 15:20 * 邮箱:657083984@qq.com */public class RecycleViewDivider extends RecyclerView.ItemDecoration{    private Drawable drawable;    public RecycleViewDivider(Context context) {        drawable = context.getResources().getDrawable(R.mipmap.list_divider);////        drawable = context.getResources().getDrawable(R.drawable.shape);    }    @Override    public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {//        drawVertical(c, parent);    }    @Override    public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {        super.onDrawOver(c, parent, state);        drawVertical(c, parent);    }    private void drawVertical(Canvas canvas, RecyclerView parent) {        int left = parent.getPaddingLeft();        int right = parent.getWidth()-parent.getPaddingRight();        View child;        RecyclerView.LayoutParams layoutParams;        int top;        int bottom;        int count = parent.getChildCount();        for(int i = 0;i


效果图  一个是用的图片,一个是用的自定义的一个shape   

这样就实现它的分割线了 并且我们可以随意的绘制。

这种方法比较简单,但是如果我们把上述代码放到编译器中,你会发现构造方法中的

context.getResources().getDrawable(R.mipmap.list_divider); 这个方法是被废弃的一个方法。最然现在可以用,但是毕竟有风险,反正我不喜欢看到一个横杠在代码上画着。
后来发现我们可以通过改变系统属性来实现  系统属性 listDivider
   
      
   

构造方法中改为:

   public RecycleViewDivider(Context context) {//        drawable = context.getResources().getDrawable(R.mipmap.list_divider);//        drawable = context.getResources().getDrawable(R.drawable.shape);        TypedArray array = context.obtainStyledAttributes(new int[]{android.R.attr.listDivider});        drawable = array.getDrawable(0);        array.recycle();    }


效果:


跟上面的效果一样而且没有被废弃的方法,还是比较完美哈哈

OK分割线已经搞定  但是我们还会发现一个让人郁闷的地方,它没有提供给我们 OnclickListener和OnLongClickListener方法

一种简单的方法我们可以去adapter中自己实现 ,下一篇在写吧~~


更多相关文章

  1. Android疑问1——Handler的removeCallbacks方法无效?(已经明白了)
  2. android仿ios开关按钮
  3. 直播平台软件开发Android(安卓)Activity横竖屏切换生命周期详解
  4. 运行时动态注销在AndroidManifest.xml声明的BroadcastReceiver,En
  5. uni-app之APP和小程序微信授权方法
  6. android adb root方法
  7. android webview中使用Java调用JavaScript方法并获取返回值
  8. Android更新UI的四种方法详解
  9. Android(安卓)ListView中动态显示和隐藏Header&Footer的方法(转)

随机推荐

  1. android 侦听文件变化
  2. Android(安卓)Studio安装genymotion插件
  3. Android上关于cmwap/cmnet网络切换的疑惑
  4. Android应用程序消息处理机制(Looper、Han
  5. Android(安卓)Studio更新以及异常处理【s
  6. 在Android中如何通过点击edittext之外的
  7. Android中使用SQLiteOpenHelper对SQLite
  8. android studio下Maven管理android的库
  9. android事件薄-不能安装APK的一种原因
  10. 取代opencore的stagefright