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.

Respuestas:


59

Establecer windowSoftInputModepropiedad en adjustPanyadjustResize

<activity android:windowSoftInputMode="adjustPan|adjustResize"> </activity>

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>

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);

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


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">

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.


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í.


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);

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>

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>

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.


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.
    }

0

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


0

Esto funciona como un encanto para mi

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

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.


-2

Esto definitivamente funcionará para ti.

android: windowSoftInputMode = "adjustPan"


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.