RecycleView添加分割线。
来源:互联网 发布:模块化编程的好处 编辑:程序博客网 时间:2024/05/22 12:39
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.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.util.Log;import android.view.View;/** * Created by Administrator on 2016/8/1. */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); } public 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) { if (mOrientation == VERTICAL_LIST) { drawVertical(c, parent); } else { drawHorizontal(c, parent); } } public 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); android.support.v7.widget.RecyclerView v = new android.support.v7.widget.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); } } public 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); } }}
添加DividerItemDecoration类。
mRecyclerView.addItemDecoration(new DividerItemDecoration(MainActivity.this, DividerItemDecoration.VERTICAL_LIST));实例化的时候add一个动画。
0 0
- RecycleView添加分割线。
- Recycleview添加分割线
- RecycleView添加分割线
- RecycleView添加分割线
- RecycleView添加横向分割线
- recycleview设置分割线
- Android RecycleView分割线
- recycleview万能分割线
- RecycleView 万能分割线
- recycleView分割线
- 【RecycleView加分割线】Android RecycleView列表布局添加分割线如此简单
- Android RecycleView(二)——添加分割线
- RecycleView添加分割线(ItemDecoration)以及交互动画效果
- ListView分割线,RecycleView分割线
- 为RecycleView增加分割线
- RecycleView分割线工具类
- RecycleView-自定义分割线-ItemDecoration
- RecycleView的分割线类
- 导出页面div中的图
- 美团外卖手机网页版数据加密解析
- js中typeof与instanceof用法
- Android Fragment 真正的完全解析(下)
- 四大组件Activity的工作过程
- RecycleView添加分割线。
- ASCII,UNICODE与UTF-8
- 原生JS中如何获取CSS属性中的值
- kibana 报错 nested: FacetPhaseExecutionException Parse Failure [Failed to parse source
- 解决“Unable to find vcvarsall.bat”错误
- QUST'S OJ problem 1641错位的键盘
- HAProxy安装及配置
- maven手册篇
- UVA 11021 Tribbles【概率】