Android Rect的宽度和高度与原始尺寸不同

时间:2016-06-29 11:42:50

标签: java android

我正在追踪一个问题,为什么Rect.intersects函数在我的Android应用程序中不起作用,并发现我的一个矩形的宽度和高度不正确。

ImageView tt = (ImageView)findViewById(R.id.tt);
Rect newInRect = new Rect(421, tt.getTop(), tt.getRight(), tt.getBottom());
Log.d("Size comparison", String.format("getRight %d, getLeft: %d | Width: %d, Height: %d", tt.getRight(), tt.getLeft(), newInRect.width(), newInRect.height()));

输出为:“尺寸比较:getRight 296,getLeft:144 |宽度:-124,高度:152”

getRight()和getBottom()函数不代表宽度和高度吗? 为什么他们会返回不同的值?哪一个是正确的? 我的目的是使一个Rect与一个名为tt的ImageView的大小完全相同,但使用不同的X坐标。我怎么能这样做?

3 个答案:

答案 0 :(得分:1)

不,请查看Rect

的实施情况
 /**
 * @return the rectangle's width. This does not check for a valid rectangle
 * (i.e. left <= right) so the result may be negative.
 */
public final int width() {
    return right - left;
}

/**
 * @return the rectangle's height. This does not check for a valid rectangle
 * (i.e. top <= bottom) so the result may be negative.
 */
public final int height() {
    return bottom - top;
}

你只是在比较错误的价值观。尝试比较两种情况下的宽度和高度(Rect)。

答案 1 :(得分:0)

获得宽度和高度:

ViewGroup.LayoutParams layoutParams = tt.getLayoutParams();
int h = layoutParams.height;
int w = layoutParams.width;

答案 2 :(得分:0)

getLeft()getRight()getBottom()getTop()返回相对于父级的值,而不是屏幕坐标。