我正在追踪一个问题,为什么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坐标。我怎么能这样做?
答案 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()
返回相对于父级的值,而不是屏幕坐标。