自定义的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);
}