No puedo comentar sobre tu respuesta, pero me gustaría añadir algo.
Entiendo su dilema y por qué la solución a la que se vinculó no es una solución completa para su situación (ya que no puede desplazarse hasta la parte inferior de la vista). Tengo una situación similar con un gran cuadro desplegable EditText. Cuando aparece el teclado suave no me gusta que mi fondo quede aplastado.
He tratado de su solución y mientras que a primera vista parece funcionar, hay algunas situaciones en las que podría no ser ideal:
- Si usted permite que su aplicación el tener un modo de paisaje, el fondo no cambia de tamaño/estiramiento
- Si ejecuta su aplicación en un dispositivo con una pantalla más grande o dpi, sus antecedentes no puede llenar la pantalla
Básicamente, parece que cuando se establece el scaleType
a matrix
eres t Elling Android para dibujar el fondo 1: 1 y no a escala. Entonces, ¿qué sucede cuando abre el teclado virtual utilizando su solución? scrollView
y imageView
están cambiando de tamaño como de costumbre, pero la imagen que estableció sigue siendo 1: 1 y continúa mostrando la misma área.
Así que si, por ejemplo, su imagen de fondo se configuró en un tamaño específico (por ejemplo, 480 x 800) y rellena perfectamente su Nexus One, en el momento que gire hacia el paisaje tendrá un área negra a la derecha.
Esto es discutible, por supuesto, si su fondo es simplemente un patrón repetitivo, en cuyo caso puede hacerlo extremadamente grande y con suerte compensar varias pantallas (tal vez incluso tabletas).
O también puede suministrar diferentes fondos para diferentes tamaños de pantalla/densidades/orientaciones, pero esto todavía no tiene en cuenta la escala.
En un vano esfuerzo para tratar de resolver esto, me encontré con un atributo View
llamado android:isScrollContainer
. Este atributo le dice a ciertas vistas si pueden o no cambiar el tamaño al mostrar el teclado virtual. Esto también lo menciona alguien en su solución vinculada.He intentado configurar esto (a falso) en el ViewGroup
que contiene mi fondo, pero cualquier elemento secundario que se desplaza parece anularlo, lo que provoca el aplastamiento de nuevo.
En este momento no creo que haya una solución completa para nuestra situación. Tu definitivamente funciona en algunos casos y te agradezco el esfuerzo. Es de esperar que Google ofrezca una solución en el futuro, pero no creo que lo consideren un problema/prioridad.
No podemos poner la matriz como un tipo de escala, que afecta a la imagen de escala de propiedad, mientras que en mi caso necesito fitCenter. –