Android: ¿Cómo evito que el teclado virtual empuje mi vista hacia arriba?

Tengo un cajón deslizante vertical en la parte inferior de mi aplicación. Cuando se abre el teclado suave, empuja hacia arriba la pestaña del cajón, por lo que se ubica sobre el teclado. De hecho, quiero que permanezca en la parte inferior de la pantalla, quedando oculto cuando se muestra el teclado.

Alguien mas se encuentra con este problema? ¿Sabes cómo solucionarlo?

Simplemente puede cambiar el indicador windowSoftInputMode de su actividad a “adjustPan” en el archivo AndroidMainfest.xml, que incluye su etiqueta de actividad. Consulte la documentación oficial para obtener más información.

  

Ninguna de las respuestas funcionó para mí, pero este fue el truco:

 android:windowSoftInputMode="adjustNothing" 

En mi caso, la razón por la que se presionaron los botones fue porque la vista sobre ellos era un ScrollView , y se colapsó con los botones al teclado, sin importar el valor de android:windowSoftInputMode que estaba configurando.

Pude evitar que mi fila inferior de botones fuera presionada por el teclado al configurar android:isScrollContainer="false" en el ScrollView que se encuentra sobre los botones.

Puede intentar agregar este atributo dinámicamente, poniendo el siguiente código en el método onCreate de su actividad:

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

Esto funcionó para mí, más bien que:

 android:windowSoftInputMode="adjustPan" 

didnt.

Estas respuestas aquí no me ayudaron. Así que probé esto:

 android:windowSoftInputMode="adjustResize" 

Esto funcionó como un encanto, ahora el encabezado de mi aplicación no desaparece. Es más suave.

Para futuros lectores.

Quería un control específico sobre este tema, así que esto es lo que hice:

Desde un fragmento o actividad, oculte sus otras vistas (que no son necesarias mientras el teclado está activo) y luego resuélvalas para resolver este problema:

  rootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { Rect r = new Rect(); rootView.getWindowVisibleDisplayFrame(r); int heightDiff = rootView.getRootView().getHeight() - (r.bottom - r.top); if (heightDiff > 100) { // if more than 100 pixels, its probably a keyboard... //ok now we know the keyboard is up... view_one.setVisibility(View.GONE); view_two.setVisibility(View.GONE); }else{ //ok now we know the keyboard is down... view_one.setVisibility(View.VISIBLE); view_two.setVisibility(View.VISIBLE); } } }); 

Para los usuarios de xamarin, agreguen este código al atributo Activity de la clase MainActivity,

 WindowSoftInputMode =Android.Views.SoftInput.AdjustNothing 

o puede agregar este código Window.SetSoftInputMode(Android.Views.SoftInput.AdjustNothing) al método OnCreate de la clase MainActivity.

Para hacer esto programáticamente en un fragmento puede usar el siguiente código

 getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); 

Coloque esto en onResume ()

Hasta el momento, las respuestas no me han ayudado ya que tengo un botón y un campo de entrada de texto (uno al lado del otro) debajo de la vista de texto que se ha ocultado por el teclado, pero esto ha solucionado mi problema:

 android:windowSoftInputMode="adjustResize" 

Solo una línea para agregar …

Agregar android:windowSoftInputMode="stateHidden|adjustPan" en la actividad requerida de su manifest file .

Me acabo de resolver 🙂 🙂

Agregue el siguiente código a la ‘actividad’ del archivo Manifiesto.

 android:windowSoftInputMode="adjustResize" 

Esto fue lo mejor que funcionó para mí

 android:windowSoftInputMode="adjustNothing" 

¡Intentalo!

 android:windowSoftInputMode="stateHidden|adjustNothing" 

Este código funciona

La ventana principal de la actividad no cambiará de tamaño para dejar espacio para el teclado virtual. Más bien, el contenido de la ventana se panoramizará automáticamente para que el enfoque actual nunca se oculte por el teclado y los usuarios siempre puedan ver lo que escriben.

 android:windowSoftInputMode="adjustPan" 

Esta podría ser una mejor solución para lo que desea.

Para la vista de desplazamiento:

si después de agregar android:windowSoftInputMode="stateHidden|adjustPan" en su manifiesto de Android y aún no funciona.

Puede verse afectado porque cuando aparece el teclado, estará en una vista de desplazamiento y si su botón / cualquier objeto no está en su vista de desplazamiento, los objetos seguirán el teclado y moverán su posición.

Revisa tu xml donde está tu botón y asegúrate de que esté debajo de tu corchete Ver el corchete y no fuera de él.

Espero que esto ayude. :RE

Bueno, he visto estas respuestas, pero en mi caso caí en la misma cuestión y me refugié a través de una solución muy práctica y fácil que implica poner un pequeño atributo inocente en la etiqueta de Scrollview que reside en su archivo xml. Es decir

 android:isScrollContainer="false" 

¡Buena suerte!

Intenta usar esto:

 android:windowSoftInputMode="stateHidden|adjustPan" 

Este código puede ayudarte. Úselo en su método oncreate .

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

Incluya en su archivo de manifiesto en la actividad que desea mostrar. Pero asegúrese de no utilizar la actividad de pantalla completa

 android:windowSoftInputMode="adjustPan" 

En mi caso, necesitaba el teclado para mantenerlo oculto y justo después de hacer clic en el botón, mi diseño debe ajustarse, así que acabo de agregar este comando en el manifiesto y se volvió súper correcto.

 android:windowSoftInputMode="stateHidden|adjustResize" 
 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); 

Este está trabajando para mí.

@manifest en tu actividad:

 android:windowSoftInputMode="stateAlwaysHidden|adjustPan"