Wie finde ich Element in View von Koordinaten x, y Android

Wenn ich kenne Koordinaten (X, Y) Pixel (von OnTouchEvent-Methode und getX (), getY) wie kann ich Element ex finden. Taste oder Text etc …. mit X, Y

  • Android Studio sieht Gerät nicht
  • Android - Tabhost arbeitet in Aktivitätsklasse
  • Wie benutzt man JarJar mit Android, um Paketnamen von externen Gläsern zu ändern?
  • Wie man Text aus Textbox im Android-Widget abruft?
  • Dynamisch ändernde Androide Präferenz ist Widgetlayout Ressource
  • Erstellen Sie verschiedene Layout für Android-Handy und Tablette
  • Dateisystem Listener
  • Android Espresso-Test 'Kann nicht beheben Symbol' InstrumentationRegistry ''
  • FragmentPagerAdapter Swipe zum Anzeigen von ListView 1/3 Bildschirmbreite
  • Äquivalent von ListView.setEmptyView in RecyclerView
  • Android Volley MalformedURLException Schlechte URL
  • Wie zeichne Kreis um einen Stift mit Google MAps API v2
  • 3 Solutions collect form web for “Wie finde ich Element in View von Koordinaten x, y Android”

    Sie können getHitRect(outRect) jedes Kindes verwenden und überprüfen, ob der Punkt im resultierenden Rechteck ist. Hier ist eine schnelle Probe.

     for(int _numChildren = getChildCount(); --_numChildren) { View _child = getChildAt(_numChildren); Rect _bounds = new Rect(); _child.getHitRect(_bounds); if (_bounds.contains(x, y) // In View = true!!! } 

    Hoffe das hilft,

    FuzzicalLogic

    Eine etwas komplettere Antwort, die jede ViewGroup akzeptiert und rekursiv nach der Ansicht bei der angegebenen x, y sucht.

     private View findViewAt(ViewGroup viewGroup, int x, int y) { for(int i = 0; i < viewGroup.getChildCount(); i++) { View child = viewGroup.getChildAt(i); if (child instanceof ViewGroup) { View foundView = findViewAt((ViewGroup) child, x, y); if (foundView != null && foundView.isShown()) { return foundView; } } else { int[] location = new int[2]; child.getLocationOnScreen(location); Rect rect = new Rect(location[0], location[1], location[0] + child.getWidth(), location[1] + child.getHeight()); if (rect.contains(x, y)) { return child; } } } return null; } 

    Android verwenden dispatchKeyEvent / dispatchTouchEvent, um die richtige Ansicht zu finden, um Key / Touch-Ereignis zu behandeln, ist es eine komplexe Prozedur. Da es viele Ansichten geben könnte, decken Sie den (x, y) Punkt ab.

    Aber es ist einfach, wenn du einfach nur die meisten Oberseiten sehen willst, die den (x, y) Punkt abdecken.

    1 Verwenden Sie getLocationOnScreen (), um die absoulte Position zu erhalten.

    2 Verwenden Sie getWidth (), getHeight (), um herauszufinden, ob die Ansicht den (x, y) Punkt abdeckt.

    3 Cacluate das Niveau der Ansicht im ganzen Blick Baum. (Rufen Sie getParent () rekursiv oder verwenden Sie eine Suchmethode)

    4 Finden Sie die Ansicht, dass beide den Punkt abdecken und das größte Niveau haben.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.