自定义View——对padding属性无效的处理

自定义的View在布局文件中设置padding属性,无任何作用。这是由于在自定义的View中没有对padding属性进行处理。

例如绘制一个矩形的话只需要在onDraw()方法中稍加修改即可。

代码如下:

修改前(padding属性无效)

@Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        
        //获取控件宽高
        int width = getWidth();
        int height = getHeight();
        //绘制矩形
        canvas.drawRect(0, 0, width, height, mPaint);
    }

修改后

@Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        //获取padding值
        int paddingLeft = getPaddingLeft();
        int paddingRight = getPaddingRight();
        int paddingTop = getPaddingTop();
        int paddingBottom = getPaddingBottom();
        //获取控件宽高
        int width = getWidth();
        int height = getHeight();
        //绘制矩形
        canvas.drawRect(0 + paddingLeft, 0 + paddingTop, width - paddingRight, height - paddingBottom, mPaint);
    }

 

你可能感兴趣的:(Android学习日记)