¿Hay alguna manera de cambiar el valor de android: windowSoftInputMode de la clase java?


Quiero que mis pestañas tengan diferentes propiedades windowSoftInputMode para cada pestaña. ¿Cómo acceder a esta propiedad desde la clase java cuando todo el manejo de su pestaña se realiza desde una sola actividad?

¿Hay alguna forma de acceder a esta propiedad del manifiesto desde el código java?

Author: Prasham, 2011-05-26

4 answers

Use lo siguiente para cambiar el modo Softinput de una actividad.

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

Use lo siguiente para cambiar el tipo softInput para un EditText.

mEditText.setImeOptions(EditorInfo.IME_ACTION_DONE);

Gracias a @Eliezer por la corrección

 90
Author: 66CLSjY,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-18 02:36:06

De acuerdo con comentario de Prasham , hice esto y salvó mi vida, gracias a él! Los modos EditText y SoftWindowInput son bastante defectuosos cuando tiene un diseño con ScrollView y lo está llenando dinámicamente.

Ya que había pasado por este post pero había seguido leyendo otras respuestas/comentarios (como el de Prashan), decidí escribirlo en un nuevo post.

Debajo del código que usé con mi ScrollView:

Activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
 31
Author: aman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:10:33

Mi objetivo es utilizar dos modos diferentes para las pestañas. Los modos son: SOFT_INPUT_ADJUST_RESIZE y SOFT_INPUT_ADJUST_NOTHING.

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

La línea de código anterior simplemente no funciona por sí misma. App siempre se comporta en un estado ADJUST_NOTHING. Sin embargo, si windowSoftInputMode="adjustResize" se inserta en la etiqueta <activity> en AndroidManifest.archivo xml, ventana de la aplicación se redimensiona como predeterminado. Además, al llamar a la siguiente línea

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);

Se comportará como se espera y no se redimensionará nada.

P.d. mejora de la respuesta

 7
Author: Shnkc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-24 14:19:44

Puede utilizar el siguiente código mediante programación

android.view.inputmethod.InputMethodManager imm = (android.view.inputmethod.InputMethodManager) context
                .getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);

Gracias Deepak

 0
Author: Sunil Kumar Sahoo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-26 12:26:53