Si conozco coordenadas (X, Y) pixel (por el método OnTouchEvent y getX(), getY) cómo puedo encontrar el elemento ex. botón o texto, etc. ... mediante el uso X, YCómo encontrar elemento en Vista por coordenadas x, y Android
Respuesta
Puede usar getHitRect(outRect)
de cada niño Ver y comprobar si el punto está en el rectángulo resultante. Aquí hay una muestra rápida.
for(int _numChildren = getChildCount(); --_numChildren)
{
View _child = getChildAt(_numChildren);
Rect _bounds = new Rect();
_child.getHitRect(_bounds);
if (_bounds.contains(x, y)
// In View = true!!!
}
Espero que esto ayude,
FuzzicalLogic
uso androide dispatchKeyEvent/dispatchTouchEvent a encontrar la visión adecuada para manejar evento clave/táctil, que es un procedimiento complejo. Como puede haber muchas vistas, cubra el punto (x, y).
Pero es simple si solo desea encontrar la vista más superior que cubra el punto (x, y).
1 Use getLocationOnScreen() para obtener la posición absoulte.
2 Use getWidth(), getHeight() para averiguar si la vista cubre el punto (x, y).
3 Categule el nivel de vista en el árbol de vista completa. (Llame a getParent() recursivamente o use algún método de búsqueda)
4 Busque la vista que cubra el punto y tenga el nivel más alto.
Una respuesta un poco más completa que acepta cualquier ViewGroup
y buscará recursivamente la vista en la x, y dada.
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;
}
La misma solución que https://stackoverflow.com/a/10959466/2557258 pero en Kotlin:
fun getViewByCoordinates(viewGroup: ViewGroup, x: Float, y: Float) : View? {
(0 until viewGroup.childCount)
.map { viewGroup.getChildAt(it) }
.forEach {
val bounds = Rect()
it.getHitRect(bounds)
if (bounds.contains(x.toInt(), y.toInt())) {
return it
}
}
return null
}
- 1. Cómo obtener la vista desde las coordenadas X/Y
- 2. Encuadernación a X Y coordenadas del elemento en WPF Canvas
- 3. Cómo encontrar las coordenadas del centro x del elemento y la compensación de la ventana relacionada
- 4. obteniendo las coordenadas X e Y para un elemento div
- 5. Encontrar la distancia máxima entre (x, y) coordenadas
- 6. Seguimiento de Android coordenadas x, y dibujar desde la ruta
- 7. Ubicar elemento DOM por coordenadas absolutas
- 8. Convertir Lat/Longs en X/Y Coordenadas
- 9. widget de pantalla de inicio de Android x-y coordenadas
- 10. Almacenamiento de objetos para localizar por coordenadas x, y
- 11. Buscar vista con coordenada x/y dada en android
- 12. jQuery x y coordenadas del documento del objeto DOM
- 13. ¿Cómo puedo obtener las coordenadas x/y de un elemento SVG (ruta, etc.) que no tiene los atributos X/Y?
- 14. WPF Popup Control - Buscar X, Y Coordenadas
- 15. Buscar X/Y de un elemento HTML con JavaScript
- 16. HTML5: dragover(), drop(): cómo obtener las coordenadas x, y actuales?
- 17. Recuperar las coordenadas X e Y de un botón en Android?
- 18. Conversión de longitud/latitud en coordenadas X/Y
- 19. Simular clics en coordenadas x/y con javascript
- 20. gnuplot: Trazado de coordenadas X, Y y su etiqueta
- 21. Colocar la imagen en las coordenadas Android
- 22. Conversión de Lat/Longs en Coordenadas X/Y
- 23. Android: Vista en lista Elemento seleccionado -1
- 24. Obtención clic coordenadas en Android ListView OnItemClickListener
- 25. Coloque los componentes en coordenadas arbitrarias (x, y)
- 26. ¿Cómo encontrar la temperatura de la ciudad por longitud y latitud en android?
- 27. zoom centrado en vista personalizada - cálculo de coordenadas de lienzo
- 28. Toque las coordenadas en la vista de texto
- 29. Encontrar coordenadas de un punto en OpenLayers
- 30. Captura de x, y Coordenadas con Python PIL
He probado y funciona. –
Funciona bien, pero parece que el elemento secundario puede ser nulo, por lo que se necesita una verificación para evitar la NullPointerException. –
funciona perfecto. –