视图的右边不应该是 left + width 吗?
Shouldn't the right be left + width for a view?
对于绘制矩形的自定义视图,我在 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();
?
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);
对于绘制矩形的自定义视图,我在 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();
?
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);