java - screenorientation - onConfigurationChanged() no se dispara para keyboardHidden
types of activities android (1)
No, onConfigurationChange () no detecta los eventos de teclado virtual: no es un cambio de configuración. El cambio de orientación hace que se use un nuevo conjunto de recursos (como layout-land vs layout-port), que es la definición de un cambio de configuración.
Así que ¿cómo se hace? Bueno, no se dispara ningún evento cuando se muestra el teclado, pero puede detectar cuándo el teclado hace que se ajuste su diseño.
Consulte ¿Cómo comprobar la visibilidad del teclado del software en Android? para el codigo
He seguido las diversas preguntas y respuestas aquí para configurar mi actividad de Android para anular el onConfigurationChanged()
para ejecutar la lógica cuando el teclado onConfigurationChanged()
abre y se cierra. Aquí están los extractos relevantes de mi código. Lo he reducido al escenario más simple:
AndroidManifest.xml
...
<activity
android:name=".SearchActivity"
android:label="@string/app_name"
android:configChanges="keyboard|keyboardHidden|orientation"
/>
...
SearchActivity.java
...
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Toast.makeText(this, "onConfigurationChanged()", Toast.LENGTH_SHORT).show();
}
...
El código anterior mostrará el Toast cuando cambie la orientación, pero no hace nada cuando el teclado virtual se abre o se cierra. He probado abrir el teclado virtual a través del enfoque EditText y abriéndolo manualmente con una pulsación larga en el botón de menú. Ni disparar la llamada onConfigurationChanged()
.
Así que el código en su lugar parece funcionar desde que se activó el cambio de orientación, pero no obtengo nada para el teclado virtual. ¿Algunas ideas? Si la respuesta es "onConfigurationChanged () no detecta los eventos de teclado virtual", ¿cuál es la solución adecuada para detectar y manejar este evento?
En caso de que sea relevante, estoy probando en un Droid X con Gingerbread.