【问题标题】:Android check for view at positionAndroid检查位置视图
【发布时间】:2013-11-22 10:45:49
【问题描述】:

我有一个按钮,可以在相对布局的坐标处创建文本视图,我要做的是检查是否已经在该位置创建了文本视图,以便我可以在其他地方创建文本视图。

总而言之,我的问题是如何检查另一个视图是否在位置 x 和 y? 下面是创建代码:

@Override
   public void onClick(View v) {
   DragTextView textview = MainActivity.createTextView(context);
   textview.setX(getX()+getWidth()+30);
   textview.setY(getY()+getHeight()+30);
}

【问题讨论】:

  • 如果您总是自己设置位置,请保留List 或HashMap 以跟踪视图位置。然后在绘制另一个视图时,检查 List 或 HashMap 以查看该位置是否已经有另一个视图..
  • Android 是否有内置功能用于这种检查?因为手动检查每个视图的位置和边界对我来说是一项相当乏味的任务。

标签: android view position


【解决方案1】:

此示例代码可能会对您有所帮助...

    int left = textView.getLeft();
    int right = textView.getRight();
    int top = textView.getTop();
    int bottom = textView.getBottom();
    Rect rect = new Rect(left, top, right, bottom);
    int x = 200;
    int y = 250;
    if(rect.contains(x, y)) {
        Log.i(TAG, "TextView occupied (200,250) position");
    }

【讨论】:

  • 谢谢,我不知道 Rect 类,我想我将为相关布局中的所有孩子使用 for 循环并检查每个人的 Rect 看是否有它们相交。
【解决方案2】:

看看这是否可以帮助你。我得到这个解决方案提供了视图的坐标。将此值存储在某个 Collection 对象中,并在放置视图之前引用相同的值

Getting View's coordinates relative to the root layout

How to get screen cordinates corresponding to the whole screen, and not the View touched?

【讨论】:

  • 我认为 getX() 和 Y 已经符合目的,因为我需要根据父布局而不是屏幕的坐标,我使用的是 2d ScrollView,这意味着布局可以扩展很多比屏幕更远(宽高约2000)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-16
  • 1970-01-01
  • 2018-09-08
  • 2017-02-09
  • 1970-01-01
相关资源
最近更新 更多