Cómo mover el diseño hacia arriba cuando se muestra el teclado virtual android

85

Tengo una pantalla de inicio de sesión con dos EditTextsy un botón de inicio de sesión en mi diseño. El problema es que, cuando comienzo a escribir, se muestra el teclado virtual que cubre el botón de inicio de sesión. ¿Cómo puedo empujar el diseño hacia arriba o encima del teclado cuando aparece?

No quiero usar a ScrollView, solo quiero implementarlo sin desplazarme hacia abajo. Por favor, sugiéreme alguna forma de hacerlo. Gracias por adelantado.

cavallo
fuente

Respuestas:

59

Establecer windowSoftInputModepropiedad en adjustPanyadjustResize

<activity android:windowSoftInputMode="adjustPan|adjustResize"> </activity>
jeet
fuente
32
Esto no funcionó de inmediato, pero cambiarlo para <activity android:windowSoftInputMode="adjustResize"></activity>que funcione.
nickiaconis
2
Menciona qué versión de Android estás usando. Algunas respuestas pueden ser totalmente inútiles en algunas versiones.
Josh
como dijo @nickiaconis, no necesito el parámetro 'AdjustPan' y funciona para mí, gracias
danisupr4
¿Existe un equivalente disponible para el proyecto portátil de Xamarin.Forms? así que no tengo que hacer esto para cada plataforma de destino individual.
user20358
6
El ajuste debe ser uno de los valores enumerados en la siguiente tabla, o una combinación de un valor de "estado ..." más un valor de "ajuste ...". Establecer varios valores en cualquier grupo (por ejemplo, varios valores de "estado ...") tiene resultados indefinidos. developer.android.com/guide/topics/manifest/…
EmJiHash
34

Pruebe esto en el archivo de manifiesto de Android correspondiente a la actividad.

<activity android:windowSoftInputMode="adjustPan"> </activity>
Jency
fuente
1
mi loyout se mueve hacia arriba la primera vez, pero cuando se cierra el teclado y se abre de nuevo, no se mueve.
nabeghe
24

Utilice este código en el onCreate()método:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
Bobs
fuente
1
Gracias, eso ayudó. <activity android: windowSoftInputMode = "adjustPan"> </activity> no funcionó para mí por alguna razón.
DH28
1
Este método, pero uso en SOFT_INPUT_ADJUST_RESIZElugar de ADJUST_PAN, funcionó para mí
Voy
16

solamente

android:windowSoftInputMode="adjustResize"

en su etiqueta de actividad dentro del archivo de manifiesto hará el truco

Bhargav Thanki
fuente
Estoy usando ConstraintLayout, esta solución no me funciona.
Karan Sharma
En el momento de escribir esta respuesta, ConstraintLayout no se agregó en los diseños de Android. En este hilo encontrará cualquier otra solución que se adapte mejor a sus necesidades. Y seguramente actualizaré mi respuesta para ConstraintLayout una vez que tenga tiempo. Gracias por informar
Bhargav Thanki
12

Ponga esta línea en el tiempo de declaración de actividad en manifest.xml

<android:windowSoftInputMode="adjustPan">
Dayanand Waghmare
fuente
10

De alguna manera logré esto al conocer el estado del teclado virtual en el dispositivo. Muevo el diseño a la posición y cuando se muestra el teclado y vuelvo a su posición original cuando no se muestra. esto funciona bien, siga estas pautas.

cavallo
fuente
2
Puedo mover el diseño hacia arriba cuando se muestra el teclado, pero no puedo moverme a su posición original mientras el teclado se oculta, ¿me pueden ayudar en esto?
Kishore
9
android:fitsSystemWindows="true"

agregar propiedad en el diseño principal del archivo de diseño y

android:windowSoftInputMode="adjustResize"

agregue una línea en su archivo Manifest.xml en su Activty

es un trabajo perfecto para mí.

Kalsariya Devindra
fuente
fitSystemWindows no tiene nada que ver con el teclado
Tim
@TimCastelijns, en mi caso (actividad de pantalla completa) tiene importancia. Si se establece en false, las vistas no subirán.
CoolMind
6

Pon esto en tu declaración de actividad en el archivo de manifiesto <activity android:windowSoftInputMode="adjustPan|adjustResize"> </activity>

o si lo desea, puede agregar el método onCreate () de su actividad

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
Pradnya Kanase
fuente
1
El código manifiesto es incorrecto, de esta manera el comportamiento no está definido (usted establece dos valores de conflicto, consulte offdoc: developer.android.com/guide/topics/manifest/… , android:windowSoftInputModedescripción). @ kiwicomb123, elija un parámetro o el sistema lo elegirá por usted (y esta opción puede cambiar en otro dispositivo / versión de API)
kpower
3

Esto es todo lo que se necesita:

<activity android:windowSoftInputMode="adjustResize"> </activity>
Bolling
fuente
2

De acuerdo con esta guía , la forma correcta de lograrlo es declarando en su manifiesto:

<activity name="EditContactActivity"
        android:windowSoftInputMode="stateVisible|adjustResize">

    </activity>
David_E
fuente
Parece que stateVisible hará que se abra cuando comience la actividad, por lo que no es necesario empujar el teclado hacia arriba.
CodyEngel
2

Cuando aparece el teclado, cambia el tamaño del diseño principal, y lo que debe hacer es crear un oyente para ese diseño principal y dentro de ese oyente, agregue el código scrollT0(x,y)para desplazarse hacia arriba.

Dila Gurung
fuente
2

Si está trabajando con xamarin, puede poner este código WindowSoftInputMode =Android.Views.SoftInput.AdjustPan | Android.Views.SoftInput.AdjustResizeen el atributo de actividad de la clase MainActivity. Por ejemplo, ahora el atributo de actividad se verá a continuación

    [Activity(WindowSoftInputMode =Android.Views.SoftInput.AdjustPan | Android.Views.SoftInput.AdjustResize)]
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity
    {
        //some code here.
    }
Tushar patel
fuente
0

Haga uso del diseño relativo, ajustará la vista para que pueda ver esa vista mientras escribe el texto

Mahesh
fuente
0

Esto funciona como un encanto para mi

getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
droidchef
fuente
0

Deberías usar

android:windowSoftInputMode="adjustPan|stateHidden"

en su AndroidManifest.xmlarchivo donde declara su actividad. Esto ajustará el contenido de su diseño, cuando se muestre el teclado en el diseño.

Farhan Ghaffar
fuente
-2

Esto definitivamente funcionará para ti.

android: windowSoftInputMode = "adjustPan"

sanjay kumar
fuente
1
¿Puedes agregar alguna explicación ...?
chevybow
Simplemente vaya a su archivo AndroidManifest.xml y esta etiqueta a la actividad que desea desplazar hacia arriba en la ventana emergente del teclado
sanjay kumar