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.

Réponses:


59

Définir la windowSoftInputModepropriété sur adjustPanetadjustResize

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

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>

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

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


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

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.


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.


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

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>

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>

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.


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

0

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


0

Cela fonctionne comme un charme pour moi

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

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.


-2

Cela fonctionnera certainement pour vous.

android: windowSoftInputMode = "AdjustPan"


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.