问题描述
我有内部的两个意见RelativeLayout的。该厂景以每十秒钟的随机位置的布局内重新创建。视图2是一个静态的位置,是更大然后厂景。我想知道当第二视图区域内创建的第一个观点,我该怎么办呢?
I have a RelativeLayout with two views inside. The view1 is recreated inside the layout in a random position every ten seconds. view2 is in a static position and is bigger then view1. I want to know when the first view is created inside the second view area, how can I do that?
目前,我正在尝试此code,但ID不能很好地工作。
I'm currently trying this code but id doesn't work well.
if (paramsView1.topMargin > View2Ystart
&& paramsView1.topMargin < View2Yend
&& paramsView1.leftMargin > View2Xstart
&& paramsView1.leftMargin < View2Xend) {
return true
}
else
return false;
返回TRUE只有当厂景是感人视图2的侧面。我想只有在厂景是完全内部视图2返回true。
It returns true only if view1 is touching a side of view2. I want it returns true only if view1 is totally inside view2.
推荐答案
您应该使用 getLeft()
, GetRight时()
,共达()
和 getBottom()
。
if (v1.getTop() >= v2.getTop() &&
v1.getLeft() >= v2.getLeft() &&
v1.getRight() <= v2.getRight() &&
v1.getBottom() <= v2.getBottom()) { ...
要留意,这些值将可当父被摆出来,即不立即后 addView()
。
另一种可能的解决方案,这可能是更灵活,是建设矩形
实例,其中每个视图的坐标,例如
Another possible solution, which may be more flexible, is to build Rect
instances with each view's coordinates, e.g.
Rect rect1 = new Rect(v1.getLeft(), v1.getTop(), v1.getRight(), v1.getBottom());
Rect rect2 = new Rect(v2.getLeft(), v2.getTop(), v2.getRight(), v2.getBottom());
然后你可以使用<$c$c>rect1.contains(rect2)$c$c>或<$c$c>Rect.intersects(rect1, RECT2) 或任何其他组合。
Then you can use rect1.contains(rect2)
or Rect.intersects(rect1, rect2)
or any other combination.
这篇关于Android的 - 如何知道如果一个视图叠加在RelativeLayout的另一种观点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!