对于绘制矩形的自定义视图,我在onDraw
@Override
protected void onDraw(Canvas canvas) {
int left = getPaddingLeft();
int right = getWidth() - getPaddingLeft() - getPaddingRight();
//etc
canvas.drawRect(left, top, right, bottom, paint);
}
right
不应为:
int right = left + getWidth() + getPaddingRight();
即
int right = getWidth() + left + getPaddingRight();
?
答案 0 :(得分:2)
Right本质上是在计算内容的宽度,因此它实际上是没有两个填充的宽度。
请原谅我的ASCII解释:
// horizontal views layout. It's total views width
// |--- left padding ---|--- content ---|--- right padding ---|
// |--- left padding ---|
int left = getPaddingLeft();
// |--- content ---|
int right = getWidth() - getPaddingLeft() - getPaddingRight();
// |--- left padding ---|--- content ---|--- right padding ---|
// ^_______________^
// left right
canvas.drawRect(left, top, right, bottom, paint);
您的建议:
int left = getPaddingLeft();
// |--- left padding ---|--- content ---|--- right padding ---|--- left padding ---|--- right padding ---|
int right = getWidth() + left + getPaddingRight();
// |--- left padding ---|--- content ---|--- right padding ---|
// ^_____________________________________________________________________________________________________^
// left right
canvas.drawRect(left, top, right, bottom, paint);