Android开发RecycleView的Item分割线
来源:互联网 发布:软件著作权转让合同 编辑:程序博客网 时间:2024/05/01 19:07
/** * @name RecypricleView * @class name:com.vincent.recycleview * @class describe * @anthor Vincent QQ:1032006226 * @time 2017/7/19 0:13 * @change * @chang time * @class describe */public class DividerItemDecoration extends RecyclerView.ItemDecoration { private static final int[] ATTRS = new int[]{android.R.attr.listDivider}; public static final int HORIZONTAL_LIST = LinearLayoutManager.HORIZONTAL; public static final int VERTICAL_LIST = LinearLayoutManager.VERTICAL; private Drawable mDivider; private int mOrientation; public DividerItemDecoration(Context context,int orientation){ final TypedArray a = context.obtainStyledAttributes(ATTRS); mDivider = a.getDrawable(0); a.recycle(); setOrientation(orientation); } private void setOrientation(int orientation) { if(orientation != HORIZONTAL_LIST && orientation != VERTICAL_LIST){ throw new IllegalArgumentException("invalid orientation"); } mOrientation = orientation; } @Override public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) { if(mOrientation == VERTICAL_LIST){ drawVertical(c,parent); }else { drawHorizontal(c,parent); } } private void drawVertical(Canvas c, RecyclerView parent) { final int left = parent.getPaddingLeft(); final int right = parent.getWidth() - parent.getPaddingRight(); final int childCount = parent.getChildCount(); for (int i=0;i<childCount;i++){ final View child = parent.getChildAt(i); RecyclerView v = new RecyclerView(parent.getContext()); final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams)child.getLayoutParams(); final int top = child.getBottom() + params.bottomMargin; final int bottom = top + mDivider.getIntrinsicHeight(); mDivider.setBounds(left,top,right,bottom); mDivider.draw(c); } } private void drawHorizontal(Canvas c, RecyclerView parent) { final int top = parent.getPaddingTop(); final int bottom = parent.getHeight() - parent.getPaddingBottom(); final int childCount = parent.getChildCount(); for (int i=0;i<childCount;i++){ final View child = parent.getChildAt(i); final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams)child.getLayoutParams(); final int left = child.getRight() + params.rightMargin; final int right = left + mDivider.getIntrinsicHeight(); mDivider.setBounds(left,top,right,bottom); mDivider.draw(c); } } @Override public void getItemOffsets(Rect outRect, int itemPosition, RecyclerView parent) { if(mOrientation == VERTICAL_LIST){ outRect.set(0,0,0,mDivider.getIntrinsicHeight()); }else { outRect.set(0,0,mDivider.getIntrinsicWidth(),0); } }}
使用:
rlv.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL_LIST));
——————————–2017年7月19日00:46:08——————————–
阅读全文
1 0
- Android开发RecycleView的Item分割线
- Android RecycleView分割线
- Android RecycleView 网格分割线
- 【android】 每个item之间的分割线
- RecycleView的分割线类
- 【Android 开发】Android中自定义ListView中Item间的分割线
- Android中RecycleView万能自定义分割线
- android开发之 listview中的item去掉分割线 隐藏分割线
- android-ListView item的高度及分割线的长度
- RecycleView添加分割线。
- Recycleview添加分割线
- RecycleView添加分割线
- RecycleView添加分割线
- recycleview设置分割线
- recycleview万能分割线
- RecycleView 万能分割线
- recycleView分割线
- Android ListView中item之间的分割线
- H5和HTML5的区别
- 判断两个链表是否相交?若相交,求交点(假设链表带环)
- Hacker(二)
- Fibonacci非递归解法
- 背包模板讲解
- Android开发RecycleView的Item分割线
- [LeetCode]599. Minimum Index Sum of Two Lists
- [BZOJ4784][UOJ290][ZJOI017]仙人掌-树形DP
- python爬虫入门到懵逼-2
- java的初始化块
- TCP套接字编程
- WAV
- 计算机网络自顶向下 :应用层(DNS,POP)
- servlet和jsp学习(二)