Разве право не должно быть левым + ширина для просмотра?
Для пользовательского представления, рисующего прямоугольник, я вижу следующий код в 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();
?
1 ответ
Решение
Справа по сути вычисляется ширина содержимого, так что это буквально ширина без обоих отступов.
Простите за грубое объяснение 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);