微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我有一个RelativeLayout,里面有两个视图.每隔十秒,在布局内以随机位置重新创建view1. view2处于静态位置,比view1大.我想知道在第二个视图区域内创建第一个视图的时间,我该怎么做?

我目前正在尝试此代码,但ID不能正常工作.

if (paramsView1.topMargin > View2Ystart
            && paramsView1.topMargin < View2Yend
            && paramsView1.leftMargin > View2Xstart
            && paramsView1.leftMargin < View2Xend) {
        return true
    }
    else
        return false;

仅当view1触及view2的一侧时,它才返回true.我想只有当view1完全在view2内时才返回true.

解决方法

你应该使用getLeft(),getRight(),getTop()和getBottom().
if (v1.getTop() >= v2.getTop() &&
    v1.getLeft() >= v2.getLeft() &&
    v1.getRight() <= v2.getRight() &&
    v1.getBottom() <= v2.getBottom()) { ...

请注意,在布置父级时,即在addView()之后不会立即使用这些值.

另一种可能更灵活的解决方案是使用每个视图的坐标构建Rect实例,例如:

Rect rect1 = new Rect(v1.getLeft(),v1.getTop(),v1.getRight(),v1.getBottom());
Rect rect2 = new Rect(v2.getLeft(),v2.getTop(),v2.getRight(),v2.getBottom());

然后您可以使用rect1.contains(rect2)Rect.intersects(rect1,rect2)或任何其他组合.

原文地址:https://www.jb51.cc/android/313165.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐