视图的右侧不应该左+宽吗?

时间:2019-09-01 22:03:08

标签: android android-layout android-view android-screen android-rendering

对于绘制矩形的自定义视图,我在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 个答案:

答案 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);