Quiero que mis pestañas tengan windowSoftInputMode
propiedades diferentes 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 de manifiesto desde el código java?
adjustPan
yadjustResize
puedes ir aWindowManager.LayoutParams
clase, puedes encontrar muchas constantes útiles que se pueden usar en elsetSoftInputMode
métodogetWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
ya lo probé y realmente funcionaWindow#setSoftInputMode
sonWindowManager.LayoutParams.SOFT_INPUT_*
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
pero el teclado aún empuja hacia arriba mi FrameLayout, que está por encima de otras vistas. Pero solo eso, otros puntos de vista permanecen en su lugar. Funciona, cuando lo agrego al manifiesto, pero no quiero aplicarlo para toda la actividad.Según el comentario de Prasham , hice esto y me salvó la vida, ¡gracias a él! El modo
EditText
ySoftWindowInput
tiene bastantes errores cuando tiene un diseño conScrollView
y lo está llenando dinámicamente.Como había leído esta publicación pero seguí leyendo otras respuestas / comentarios (como la de Prashan), decidí escribirla en una nueva publicación.
Debajo del código que usé con mi
ScrollView
:Activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
fuente
Mi objetivo es usar dos modos diferentes para pestañas. Los modos son
SOFT_INPUT_ADJUST_RESIZE
ySOFT_INPUT_ADJUST_NOTHING
.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
La línea de código anterior simplemente no funciona por sí sola. La aplicación siempre se comporta en un estado
ADJUST_NOTHING
. Sin embargo, siwindowSoftInputMode="adjustResize"
se inserta en la<activity>
etiqueta del archivo AndroidManifest.xml, la ventana de la aplicación cambia de tamaño de forma predeterminada. Además, cuando llame a la siguiente líneagetWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
se comportará como se esperaba y no se cambiará el tamaño de nada.
PS mejora a la respuesta
fuente
windowSoftInputMode="adjustResize"
en el manifiesto ayuda a manejar esta bandera más adelante. Especialmente en un escenario en el que tiene principalmente Fragmentos en Actividad única. Por lo tanto, uno puede seguir cambiando dinámicamente el estado de entrada de la Actividad cambiando programáticamente deSOFT_INPUT_ADJUST_RESIZE
nuevo aSOFT_INPUT_ADJUST_NOTHING
bajo demanda. ¡Buena esa!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
fuente
En Xamarin Android se puede hacer programáticamente así
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); SetContentView(Resource.Layout.DetailDesign); Window.SetSoftInputMode(SoftInput.AdjustPan); }
fuente