给自定义的网格画上分割线
来源:互联网 发布:淘宝旗袍品牌排行榜 编辑:程序博客网 时间:2024/05/19 10:35
自定义的GridView添加分割线.
(1)继承父类是GridView.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public class MyGridView extends GridView{
private int rownum;public MyGridView(Context context) {super(context);// TODO Auto-generated constructor stub}public MyGridView(Context context, AttributeSet attrs) {super(context, attrs);// TODO Auto-generated constructor stub}public MyGridView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);// TODO Auto-generated constructor stub}@Overrideprotected void onMeasure(int widthMeasureSpec,int heightMeasureSpec){int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE>>2, MeasureSpec.AT_MOST);super.onMeasure(widthMeasureSpec, expandSpec);}@Overrideprotected void onDraw(Canvas canvas){super.onDraw(canvas);int colnum = getNumColumns();int total = getChildCount();if(total%colnum == 0){rownum = total/colnum;}else {rownum = (total/colnum)+1;}Paint localPaint = new Paint();localPaint.setStyle(Paint.Style.STROKE);localPaint.setColor(getContext().getResources().getColor(R.color.grid_line));View view0 = getChildAt(0);View viewColLast = getChildAt(colnum - 1);View viewRowLast = getChildAt((rownum - 1)*colnum);for(int i = 1,c = 1;i<rownum||c<colnum;i++,c++){canvas.drawLine(view0.getLeft(), view0.getBottom()*i, viewColLast.getRight(), viewColLast.getBottom()*i, localPaint);canvas.drawLine(view0.getRight()*c, view0.getTop(), viewRowLast.getRight()*c, viewRowLast.getBottom(), localPaint);}}}--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
(2)如果父类是ViewGroup,里面的线要在dispatchDraw中画,最后复写父类的super.dispatchDraw(canvas);
-------------------------------------------------------------------------------------------------------------------------------------------------------private int rownum;@Overridepublic void dispatchDraw(Canvas canvas){int colnum = getNumColumns();--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------int total = getChildCount();if(total%colnum == 0){rownum = total/colnum;}else {rownum = (total/colnum)+1;}Paint localPaint = new Paint();localPaint.setStyle(Paint.Style.STROKE);localPaint.setColor(getContext().getResources().getColor(R.color.grid_line));DashboardTileView view0 = (DashboardTileView)getChildAt(0);DashboardTileView viewColLast = (DashboardTileView)getChildAt(colnum - 1);DashboardTileView viewRowLast = (DashboardTileView)getChildAt((rownum - 1)*colnum);for(int i = 1,c = 1;i<rownum||c<colnum;i++,c++){canvas.drawLine(view0.getLeft(), view0.getBottom()*i, viewColLast.getRight(), viewColLast.getBottom()*i, localPaint);canvas.drawLine(view0.getRight()*c, view0.getTop(), viewRowLast.getRight()*c, viewRowLast.getBottom(), localPaint);}super.dispatchDraw(canvas);}
阅读全文
0 0
- 给自定义的网格画上分割线
- 自定义RecyclerView的网格分割线
- 自定义的分割线
- 60-给自定义的tableView的cell创建分割线(代码封装)
- 一款灵活的RecyclerView的网格布局分割线
- 自定义ListView的分割线
- 自定义recycler的分割线
- RecyclerView的自定义分割线
- RecyclerView的自定义分割线
- Android应用开发—通用的GridView网格分割线
- 给GridView的单元格加上分割线
- 给RecyclerView添加分割线的步骤
- 超简单的给RecyclerView加分割线
- Android RecycleView 网格分割线
- iOS 自定义UITableViewCell的分割线
- RecyclerView的自定义万能分割线
- Android自定义带分割线的GridView
- RecyclerVieW自定义华丽的分割线
- Mac OS X:解决Sublime Text 3 中文乱码问题
- 在一个排序数组里面找出所有和为m的组合
- NYOJ 19擅长排列的小明
- 拒绝传销币!这些是比特币中的害群之马,涨多少都千万不要买
- 笨办法学 Python · 续 练习 10:`sort`
- 给自定义的网格画上分割线
- 搞一个底部缓慢弹出菜单
- poj 1321棋盘问题(dfs)
- 向量的点积,差乘,unity 四元数
- POJ
- web浏览器显示网站小图标
- IE浏览器兼容性BUG以及跨域访问
- MyEclipse如何恢复删掉的文件
- c++11:static_assert 与assert