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

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

概述我有一个RelativeLayout,里面有两个视图.每隔十秒,在布局内以随机位置重新创建view1. view2处于静态位置,比view1大.我想知道在第二个视图区域内创建第一个视图的时间,我该怎么做? 我目前正在尝试此代码,但ID不能正常工作. if (paramsView1.topMargin > View2Ystart && paramsView1.topMargi 我有一个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)或任何其他组合.

总结

以上是内存溢出为你收集整理的Android – 如何知道视图是否覆盖RelativeLayout中的另一个视图全部内容,希望文章能够帮你解决Android – 如何知道视图是否覆盖RelativeLayout中的另一个视图所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1133727.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存