J'ai un tiroir coulissant vertical au bas de mon application. Lorsque le clavier logiciel s'ouvre, il pousse la languette du tiroir vers le haut pour le placer au sommet du clavier. En fait, je souhaite qu’il reste en bas de l’écran et devienne masqué lorsque le clavier est affiché.
Quelqu'un d'autre se heurte à ce problème? Savoir comment le réparer?
Vous pouvez simplement changer le windowSoftInputMode
flag de votre activité en adjustPan
dans votre fichier AndroidMainfest.xml
dans votre balise d'activité.
Consultez la documentation officielle pour plus d'informations.
<activity
...
Android:windowSoftInputMode="adjustPan">
</activity>
Aucune des réponses n'a fonctionné pour moi, mais cela a fait le tour:
Android:windowSoftInputMode="adjustNothing"
Dans mon cas, la raison pour laquelle les boutons ont été relevés était parce que la vue au-dessus d’eux était une ScrollView
et elle s’est effondrée lorsque les boutons ont été relevés au-dessus du clavier, quelle que soit la valeur de Android:windowSoftInputMode
que j’ai paramétrée.
J'ai été en mesure d'éviter que la dernière rangée de boutons ne soit poussée par le clavier virtuel en définissant Android:isScrollContainer="false"
sur la ScrollView
située au-dessus des boutons.
Vous pouvez essayer d'ajouter cet attribut de manière dynamique en mettant le code suivant dans la méthode onCreate
de votre activité:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
Cela a fonctionné pour moi, plutôt que:
Android:windowSoftInputMode="adjustPan"
n'a pas.
Ces réponses ici ne m'ont pas aidé. Alors j'ai essayé ceci:
Android:windowSoftInputMode="adjustResize"
Cela a fonctionné comme un charme, maintenant l'en-tête de mon application ne disparaît pas. C'est plus lisse.
Pour faire cela par programme dans un fragment, vous pouvez utiliser le code suivant
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
Placez ceci dans onResume ()
Pour les utilisateurs de xamarin, ajoutez ce code à l'attribut d'activité de la classe MainActivity,
WindowSoftInputMode =Android.Views.SoftInput.AdjustNothing
ou vous pouvez ajouter ce code Window.SetSoftInputMode(Android.Views.SoftInput.AdjustNothing)
à la méthode OnCreate de la classe MainActivity.
Pour les futurs lecteurs.
Je voulais un contrôle spécifique sur cette question, alors voici ce que j'ai fait:
Depuis un fragment ou une activité, masquez vos autres vues (inutiles lorsque le clavier est activé), puis restaurez-les pour résoudre ce problème:
rootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Rect r = new Rect();
rootView.getWindowVisibleDisplayFrame(r);
int heightDiff = rootView.getRootView().getHeight() - (r.bottom - r.top);
if (heightDiff > 100) { // if more than 100 pixels, its probably a keyboard...
//ok now we know the keyboard is up...
view_one.setVisibility(View.GONE);
view_two.setVisibility(View.GONE);
}else{
//ok now we know the keyboard is down...
view_one.setVisibility(View.VISIBLE);
view_two.setVisibility(View.VISIBLE);
}
}
});
Jusqu'à présent, les réponses ne m'ont pas aidé car j'ai un bouton et un champ textInput (côte à côte) sous le textView qui continuait à être masqué par le clavier, mais cela a résolu mon problème:
Android:windowSoftInputMode="adjustResize"
Juste une seule ligne à ajouter ...
Ajoutez Android:windowSoftInputMode="stateHidden|adjustPan"
dans l'activité requise de votre manifest file
.
Je viens d'être résolu :) :)
Ajoutez le code suivant à l'activité du fichier Manifest.
Android:windowSoftInputMode="adjustResize"
Android:windowSoftInputMode="stateHidden|adjustNothing"
Ce code fonctionne.
C'était le meilleur qui a fonctionné pour moi
Android:windowSoftInputMode="adjustNothing"
Essayez le!
Bien, j'ai regardé ces réponses mais dans mon cas, je suis tombé dans le même problème et j'ai trouvé refuge grâce à une solution très pratique et très simple qui consiste à mettre un très petit attribut innocent dans votre balise Scrollview résidant dans votre fichier xml. C'est
Android:isScrollContainer="false"
Bonne chance!
Celui-ci a fonctionné pour moi
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
Pour le défilement:
si, après avoir ajouté Android:windowSoftInputMode="stateHidden|adjustPan"
dans votre manifeste Android et ne fonctionne toujours pas.
Cela peut être affecté car, lorsque le clavier apparaît, il apparaît dans une vue de défilement et si votre bouton/un objet ne figure pas dans votre vue de défilement, les objets suivent le clavier et déplacent sa position.
Vérifiez votre XML où votre bouton est et assurez-vous qu'il est sous votre crochet de défilement de vue et non hors de celui-ci.
J'espère que cela aide. :RÉ
La fenêtre principale de l'activité ne sera pas redimensionnée pour laisser de la place au clavier virtuel. Au lieu de cela, le contenu de la fenêtre sera automatiquement balayé afin que le focus actuel ne soit jamais masqué par le clavier et que les utilisateurs puissent toujours voir ce qu'ils ont tapé.
Android:windowSoftInputMode="adjustPan"
Cela pourrait être une meilleure solution pour ce que vous désiriez.
@ manifester dans votre activité:
Android:windowSoftInputMode="stateAlwaysHidden|adjustPan"
Essayez d'utiliser ceci:
Android:windowSoftInputMode="stateHidden|adjustPan"
Ce code peut vous aider. Utilisez-le dans votre méthode oncreate
.
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
Incluez dans votre fichier manifeste sous l’activité que vous souhaitez afficher. Mais assurez-vous de ne pas utiliser Activité plein écran
Android:windowSoftInputMode="adjustPan"
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
Celui-ci travaille pour moi.
Lorsque vous souhaitez masquer la vue lorsque vous ouvrez le clavier.
ajouter ceci dans votre activité dans le fichier manifeste
Android: windowSoftInputMode = "stateHidden | adjustPan" `
Dans mon cas, j'avais besoin que le clavier reste masqué et juste après le clic sur le bouton, ma disposition devait être ajustée. J'ai donc ajouté cette commande dans le manifeste et elle est devenue parfaitement exacte.
Android:windowSoftInputMode="stateHidden|adjustResize"