android - objetivo - puntos de enfoque nikon d3200
Evite el cambio de tamaño del fondo Y evite el enfoque automático en el inicio de la actividad (4)
El hecho de que una solución requiera stateHidden y la otra requiere stateVisible significa que no puedo usar ambas soluciones.
Sí. Pero, puedes usar stateHidden|adjustPan
.
El teclado no aparecerá a menos que el usuario haga clic en EditText
. Y los cambios potenciales a su fondo serán en términos de posicionamiento; la escala del fondo no ocurrirá.
Después de buscar varias preguntas sobre el desbordamiento de pila, descubrí que muchas otras personas tenían los siguientes problemas:
- El fondo cambia de tamaño cuando se abre el teclado suave
- El teclado suave se abre cuando comienza la actividad
La solución para ambos está en el ActivityManifest.xml
.
Para evitar el cambio de tamaño de la imagen de fondo cuando se abre el teclado android:windowSoftInputMode="stateVisible|adjustPan"
, puede agregar android:windowSoftInputMode="stateVisible|adjustPan"
a la <activity>
en el manifiesto.
Para evitar que el teclado suave se abra cuando se inicia la actividad, puede agregar android:windowSoftInputMode="stateHidden"
a la <activity>
en el manifiesto.
El hecho de que una solución requiera stateHidden
y la otra requiere stateVisible
significa que no puedo usar ambas soluciones. Estoy buscando evitar que el teclado virtual robe el foco en el inicio de la actividad, pero también evite que el teclado reduzca el tamaño del fondo cuando el usuario decida enfocarse en EditText
.
¿Hay una solución viable para estos dos problemas?
Básicamente hay dos formas de cumplir con su requisito.
Solo usa la etiqueta de actividad siguiente
android: windowSoftInputMode = "adjustPan | stateAlwaysHidden"
O
Usando
android:windowSoftInputMode="stateVisible|adjustPan"
a la etiqueta de actividad en el manifiesto.
Ahora con tu EditText usa siguiente android:focusableInTouchMode="true"
con android:focusable="false"
.
¿Alguna parte de su diseño es un contenedor desplazable (como ListView)? Si es así, intente configurar android:isScrollContainer="false"
en ese elemento en su diseño XML.
Si tiene alguna vista que tenga android:isScrollContainer="true"
, el administrador de diseño intentará cambiar el tamaño de su diseño cuando aparezca el teclado, independientemente de `android: windowSoftInputMode ''.
Aquí hay una pregunta similar: ¿Qué hace android: isScrollContainer?
Si su EditText está envuelto dentro de un contenedor principal, configure android:focusableInTouchMode="true"
para ese contenedor. Básicamente, haga que ese contenedor reciba el enfoque inicial cuando comience la actividad. Eche un vistazo a este link