Comment déplacer la disposition vers le haut lorsque le clavier virtuel est affiché Android

85

J'ai un écran de connexion avec deux EditTextset un bouton de connexion dans ma mise en page. Le problème est que, lorsque je commence à taper, le clavier virtuel s'affiche et couvre le bouton de connexion. Comment puis-je pousser la disposition vers le haut ou au-dessus du clavier quand elle apparaît?

Je ne veux pas utiliser a ScrollView, je veux juste l'implémenter sans faire défiler vers le bas. S'il vous plaît, suggérez-moi une façon de faire. Merci d'avance.

Cavallo
la source

Réponses:

59

Définir la windowSoftInputModepropriété sur adjustPanetadjustResize

<activity android:windowSoftInputMode="adjustPan|adjustResize"> </activity>
jeet
la source
32
Cela n'a pas fonctionné dès la sortie de la boîte, mais le changer pour le <activity android:windowSoftInputMode="adjustResize"></activity>faire fonctionner.
nickiaconis
2
Mentionnez la version d'Android que vous utilisez. Certaines réponses peuvent être totalement inutiles sur certaines versions.
Josh
comme @nickiaconis l'a dit, je n'ai pas besoin du paramètre 'AdjustPan' et cela fonctionne pour moi, merci
danisupr4
Existe-t-il un équivalent disponible pour le projet portable Xamarin.Forms? donc je n'ai pas à faire cela pour chaque plate-forme cible individuelle.
user20358
6
Le paramètre doit être l'une des valeurs répertoriées dans le tableau suivant, ou une combinaison d'une valeur «état ...» plus une valeur «ajuster ...». La définition de plusieurs valeurs dans l'un ou l'autre groupe - plusieurs valeurs "état ...", par exemple - a des résultats non définis. developer.android.com/guide/topics/manifest/…
EmJiHash
34

Essayez ceci dans le fichier manifeste Android correspondant à l'activité.

<activity android:windowSoftInputMode="adjustPan"> </activity>
jency
la source
1
mon mouvement fidèle à la première fois, mais lorsque vous fermez le clavier et ouvrez à nouveau, ne bougez pas.
nabeghe le
24

Utilisez ce code dans la onCreate()méthode:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
Bobs
la source
1
Merci, cela a aidé. <activity android: windowSoftInputMode = "AdjustPan"> </activity> ne fonctionnait pas pour moi pour une raison quelconque.
DH28
1
Cette méthode, mais à utiliser SOFT_INPUT_ADJUST_RESIZEau lieu de ADJUST_PAN, a fonctionné pour moi
Voy
16

seulement

android:windowSoftInputMode="adjustResize"

dans votre balise d'activité dans le fichier Manifest fera l'affaire

Bhargav Thanki
la source
J'utilise ConstraintLayout, cette solution ne fonctionne pas pour moi.
Karan Sharma le
Au moment de la rédaction de cette réponse, ConstraintLayout n'a pas été ajouté dans les mises en page Android. Vous trouverez sur ce fil toute autre solution qui vous convient le mieux. Et sûrement je mettrai à jour ma réponse pour ConstraintLayout une fois que j'aurai le temps. Merci d'avoir signalé
Bhargav Thanki
12

Mettez cette ligne dans l'heure de déclaration d'activité dans manifest.xml

<android:windowSoftInputMode="adjustPan">
Dayanand Waghmare
la source
10

J'ai en quelque sorte atteint cet objectif en connaissant l'état du clavier virtuel sur l'appareil. Je déplace la disposition en position y lorsque le clavier est affiché et revient à sa position d'origine lorsqu'il n'est pas affiché. cela fonctionne très bien, a suivi ces directives.

Cavallo
la source
2
Je suis capable de déplacer la disposition vers le haut lorsque le clavier s'affiche, mais incapable de revenir à sa position d'origine lorsque le clavier se cache, pouvez-vous m'aider à cet égard.
Kishore
9
android:fitsSystemWindows="true"

ajouter une propriété sur la mise en page principale du fichier de mise en page et

android:windowSoftInputMode="adjustResize"

ajouter une ligne dans votre fichier Manifest.xml sur votre Activty

son travail parfait pour moi.

Kalsariya Devindra
la source
fitSystemWindows n'a rien à voir avec le clavier
Tim
@TimCastelijns, dans mon cas (activité plein écran), cela a de l'importance. S'il est défini sur false, les vues ne monteront pas.
CoolMind
6

Mettez ceci dans votre déclaration d'activité dans le fichier manifeste <activity android:windowSoftInputMode="adjustPan|adjustResize"> </activity>

ou si vous le souhaitez, vous pouvez ajouter la méthode onCreate () de votre activité

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
Pradnya Kanase
la source
1
Le code du manifeste est erroné, de cette façon le comportement n'est pas défini (vous définissez deux valeurs de conflit, voir offdoc: developer.android.com/guide/topics/manifest/… , android:windowSoftInputModedescription). @ kiwicomb123, choisissez un paramètre ou le système choisira pour vous (et ce choix peut changer sur un autre appareil / version API)
kpower
3

C'est tout ce qu'il faut:

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

Selon ce guide , la bonne façon d'y parvenir est de déclarer dans votre manifeste:

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

    </activity>
David_E
la source
Il semble que stateVisible le fera s'ouvrir au démarrage de l'activité, il n'est donc pas nécessaire de pousser le clavier vers le haut.
CodyEngel
2

Lorsque le clavier virtuel apparaît, il change la taille de la disposition principale, et ce que vous devez faire est de créer un écouteur pour cette disposition principale et dans cet écouteur, ajoutez le code scrollT0(x,y)pour faire défiler vers le haut.

Dila Gurung
la source
2

Si vous travaillez avec xamarin, vous pouvez placer ce code WindowSoftInputMode =Android.Views.SoftInput.AdjustPan | Android.Views.SoftInput.AdjustResizedans l'attribut d'activité de la classe MainActivity. Par exemple, maintenant l'attribut d'activité ressemblera à ci-dessous

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

Utilisez la disposition relative, cela ajustera la vue afin que vous puissiez voir cette vue tout en tapant le texte

Mahesh
la source
0

Cela fonctionne comme un charme pour moi

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

Tu devrais utiliser

android:windowSoftInputMode="adjustPan|stateHidden"

dans votre AndroidManifest.xmldossier où vous déclarez votre activité. Cela ajustera le contenu de votre mise en page, lorsque le clavier est affiché dans la mise en page.

Farhan Ghaffar
la source
-2

Cela fonctionnera certainement pour vous.

android: windowSoftInputMode = "AdjustPan"

sanjay kumar
la source
1
Pouvez-vous ajouter quelques explications ...?
chevybow
Accédez simplement à votre fichier AndroidManifest.xml et cette balise à cette activité que vous souhaitez faire défiler vers le haut sur le clavier pop-up
sanjay kumar