¿Mover los diseños hacia arriba cuando se muestra el teclado suave?

Tengo algunos elementos en una RelativeView con el conjunto de atributos de alineación inferior, cuando aparece el teclado virtual los elementos están ocultos por el teclado virtual.

Me gustaría que se muevan hacia arriba para que, si hay suficiente espacio en la pantalla, se muestren sobre el teclado, o para que la sección sobre el teclado se pueda desplazar para que el usuario pueda ver los elementos.

¿Alguna idea sobre cómo abordar esto?

Sí, consulte este artículo en el sitio de desarrolladores de Android que describe cómo se maneja el marco al aparecer el teclado virtual.

El atributo android:windowSoftInputMode se puede usar para especificar lo que sucede por actividad: si el diseño se redimensiona o si se desplaza, etc.

También puede usar este código en el método onCreate() :

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

Agregue AndroidManifest.xml para su actividad:

 android:windowSoftInputMode="adjustPan|adjustResize" 

Haga cambios en la actividad de su archivo Manifest como

 windowSoftInputMode="adjustResize" 

O

Haga cambios en su método onCreate() en la clase de actividad como

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

problema similar que estaba enfrentando con mi diseño que consiste en vista de desplazamiento dentro. Cada vez que trato de seleccionar texto en EditText, la barra de acciones Copiar / Cortar / Pegar se mueve hacia arriba con el código siguiente, ya que no cambia el tamaño del diseño

 android:windowSoftInputMode="adjustPan" 

Modificándolo a como abajo

1) AndroidManifest.xml

 android:windowSoftInputMode="stateVisible|adjustResize" 

2) archivo style.xml, en estilo de actividad

 true 

Funcionó.!!!!!!!!!!!!

En AndroidManifest.xml, no te olvides de configurar:

  android:windowSoftInputMode="adjustResize" 

y para RelativeLayout dentro de ScrollView, establece:

  android:layout_gravity="center" or android:layout_gravity="bottom" 

Estara bien

Hay 3 pasos a seguir para desplazarse por la pantalla.

  1. Escriba en el archivo de manifiesto para su actividad:

android: windowSoftInputMode = “adjustResize”

  1. Agregue la siguiente línea en el método oncreate () de su actividad

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

  1. Luego, coloque toda su vista en “Scrollview” en un archivo XML como:
     .........        

PD No te olvides de agregar android: layout_gravity = “center” en el diseño relativo de los padres.

Intenté un método de Diego Ramírez, funciona. En AndroidManifest:

   ...  

En activity_main.xml:

     ...  

para la actividad en su método de insertar oncreate debajo de la línea

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

y para fragmentos en su método onCreate

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

He encontrado una solución a mis problemas que es bastante similar a la tuya.

Antes que nada, solo tengo un LinearLayout con 2 elementos, un ImageView y un LinearLayout que contiene 2 EditText y un botón, así que necesitaba mantenerlos separados en pantalla completa sin teclado, y cuando aparece el teclado deberían mirar más de cerca.

Así que agregué la vista entre ellos con el atributo de altura en 0dp y peso 1, que me permitió mantener mis vistas separadas una de la otra. y cuando aparece el teclado, ya que no tienen una altura de corrección, simplemente cambian de tamaño y mantienen el aspecto.

Voila! El diseño cambia el tamaño y la distancia entre mis vistas es la misma cuando el teclado está o no presente.

Aquí está el código de manifiesto completo

       

si está en fragmentos, entonces tiene que agregar el siguiente código a su onCreate en su actividad, resuelve el problema para mí

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

Bien, esto es muy tarde, sin embargo, he descubierto que si agregas una Vista de lista debajo de tu texto de edición, el teclado moverá todos los diseños debajo de ese texto de edición sin mover el ListView

   ** 

Esta es la única solución que funcionó para mí.