Android-如何知道一个视图是否覆盖了RelativeLayout中的另一个视图

Android-如何知道一个视图是否覆盖了RelativeLayout中的另一个视图,android,layout,view,Android,Layout,View,我有一个相对论,里面有两种观点。view1在布局内每隔10秒以随机位置重新创建一次。view2处于静态位置,比view1大。我想知道第一个视图何时在第二个视图区域内创建,我如何才能做到这一点 我目前正在尝试此代码,但id无法正常工作 if (paramsView1.topMargin > View2Ystart && paramsView1.topMargin < View2Yend &&

我有一个相对论,里面有两种观点。view1在布局内每隔10秒以随机位置重新创建一次。view2处于静态位置,比view1大。我想知道第一个视图何时在第二个视图区域内创建,我如何才能做到这一点

我目前正在尝试此代码,但id无法正常工作

        if (paramsView1.topMargin > View2Ystart
            && paramsView1.topMargin < View2Yend
            && paramsView1.leftMargin > View2Xstart
            && paramsView1.leftMargin < View2Xend) {
        return true
    }
    else
        return false;
if(参数view1.topMargin>View2Ystart)
&&参数VIEW1.topMarginView2Xstart
&¶msView1.leftMargin

仅当view1接触view2的一侧时,它才会返回true。仅当view1完全位于view2内部时,我希望它返回true。

您应该使用
getLeft()
getRight()
getTop()
getBottom()


然后您可以使用或或任何其他组合。

您可以获得每个视图的坐标和尺寸,并进行数学运算以确定是否存在重叠。我目前正在尝试这样做,但没有成功。我在我的问题中添加了一些代码。上面的语句只有在v1在v2内时才是真的,而不是重叠时,但思想是存在的。@zgc7009该问题指定“我希望它仅在view1完全在view2内时才返回真。”我想他在编辑中添加了最后一行,在这种情况下,这很好。我刚刚使用.contains()方法尝试了使用Rect对象的解决方案。它工作得很好
if (v1.getTop() >= v2.getTop() &&
    v1.getLeft() >= v2.getLeft() &&
    v1.getRight() <= v2.getRight() &&
    v1.getBottom() <= v2.getBottom()) { ...
Rect rect1 = new Rect(v1.getLeft(), v1.getTop(), v1.getRight(), v1.getBottom());
Rect rect2 = new Rect(v2.getLeft(), v2.getTop(), v2.getRight(), v2.getBottom());