Android ScaleAnimation no escala el área seleccionable
Tengo un diseño estructurado de la siguiente manera:
LinearLayout1
LinearLayout2
Editar texto
- La subclase de EditText no se comporta como EditText
- Cómo crear una contraseña entera EditText mediante programación
- EditText setOnFocusChangeListener en todos los EditTexts
- ¿Cómo puedo poner imágenes en un campo EditText?
- Multiline EditText con IMEOption Siguiente en android
Estoy aplicando un ScaleAnimation a LinearLayout1 usando un LayoutAnimationController para que todas las vistas de la jerarquía se escalen por la misma cantidad.
Después de aplicar ScaleAnimation, las vistas están todas escaladas correctamente, pero el EditText ya no responde a los clics que caen fuera del espacio que ocupó originalmente. En otras palabras, parece que el área seleccionable para el EditText no se escala junto con la representación visual.
¿Hay una solución a este problema o me falta antes o después de llamar a ScaleAnimation?
- ¿Existe alguna manera de cambiar la forma en que se resalta el elemento de edición de Android EditText?
- Respecto al texto de edición, complete el borde
- Mantenga un valor EditText en un ListView
- Cómo hacer multiline edittext en android
- Puedo obtener Editar texto dejar evento
- ¿Cómo mostrar errores de entrada en popup?
- Cómo obtener la posición del carácter seleccionado o String en EditText
- Android editar edición de texto mostrando línea azul en la parte inferior
En caso de que alguien está buscando la respuesta a este problema, aquí está la solución que me ocurrió. Captura los eventos de clic en LinearLayout1 y realizo una prueba de éxito recursivo manual en la jerarquía de vistas usando getHitRect y aplicando el factor de escala a las dimensiones recibidas.
Esta es mi implementación de la prueba de éxito para una vista.
public boolean scaledHitTest(float zoomScale, int x, int y) { Rect rect = new Rect(); getHitRect(rect); rect.top = (int) (rect.top * zoomScale); rect.bottom = (int) (rect.bottom * zoomScale); rect.left = (int) (rect.left * zoomScale); rect.right = (int) (rect.right * zoomScale); return rect.contains(x, y); }
- ¿Es seguro pasar la instancia de una Actividad a otro objeto?
- Reproductor de medios para Android Decibel Reading