给GridView的单元格添加一个半封闭的边框

可以看出图中的单元格有一个半封闭的边框,这里我们可以重写gridview的dispatchDraw来实现:

@Override
    protected void dispatchDraw(Canvas canvas) {
        super.dispatchDraw(canvas);
        int column = getNumColumns(); //获取列数
        int row = (int) Math.ceil(getChildCount() / (float)column); //获取行数
        int childCount = getChildCount();
        Paint linePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
        linePaint.setStyle(Paint.Style.STROKE);
        linePaint.setColor(Color.WHITE);
        for (int i = 0; i<childCount ; i++){
            View child = getChildAt(i);
            if((i+1) > column * (row - 1)){
                if((i + 1) == column * row){
                    continue; 
                }else{
                    canvas.drawLine(child.getRight(),child.getTop(),child.getRight()
                                    ,child.getBottom(),linePaint);
                }
            }else if ((i+1) % column ==0){
               canvas.drawLine(child.getLeft(),child.getBottom(),child.getRight()
                                 ,child.getBottom(),linePaint);
            }else{
                canvas.drawLine(child.getLeft(),child.getBottom(),child.getRight()
                                 ,child.getBottom(),linePaint);
                canvas.drawLine(child.getRight(),child.getTop(),child.getRight()
                                 ,child.getBottom(),linePaint);
            }
        }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容