Android: Comment empêcher le clavier logiciel de repousser ma vue?

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, de sorte qu’il se trouve sur le clavier. Je veux en fait qu’il rest au bas de l’écran, devenant caché lorsque le clavier est affiché.

Quelqu’un d’autre se heurte à ce problème? Savoir comment le réparer?

Vous pouvez simplement basculer l’indicateur windowSoftInputMode de votre activité sur «adjustPan» dans le fichier AndroidMainfest.xml pour indiquer votre balise d’activité. Consultez la documentation officielle pour plus d’informations.

  

Aucune des réponses n’a fonctionné pour moi, mais cela a fait l’affaire:

 android:windowSoftInputMode="adjustNothing" 

Dans mon cas, la raison pour laquelle les boutons ont été enfoncés est que la vue au-dessus était une vue ScrollView et que les boutons étaient enfoncés au-dessus du clavier, quelle que soit la valeur de android:windowSoftInputMode .

J’ai pu éviter que ma rangée inférieure de boutons ne soit soulevée par le clavier android:isScrollContainer="false" en définissant android:isScrollContainer="false" sur le ScrollView situé au-dessus des boutons.

Vous pouvez essayer d’append cet atsortingbut de manière dynamic en plaçant 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é. J’ai donc 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 les futurs lecteurs.

Je voulais un contrôle spécifique sur ce problème, alors c’est ce que j’ai fait:

À partir d’un fragment ou d’une activité, masquez vos autres vues (qui ne sont pas nécessaires lorsque le clavier est en place), 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); } } }); 

Pour les utilisateurs de xamarin, ajoutez ce code à l’atsortingbut Activity de la classe MainActivity,

 WindowSoftInputMode =Android.Views.SoftInput.AdjustNothing 

ou vous pouvez append ce code Window.SetSoftInputMode(Android.Views.SoftInput.AdjustNothing) à la méthode OnCreate de la classe MainActivity.

Pour ce faire par programmation dans un fragment, vous pouvez utiliser le code suivant

 getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); 

Placez ceci dans onResume ()

Jusqu’à présent, les réponses ne m’ont pas aidé car j’ai un bouton et un champ textInput (côte à côte) en dessous du textView qui est toujours masqué par le clavier, mais cela a résolu mon problème:

 android:windowSoftInputMode="adjustResize" 

Juste une seule ligne à append …

Ajouter android:windowSoftInputMode="stateHidden|adjustPan" dans l’activité requirejse de votre manifest file .

Je viens d’être résolu 🙂 🙂

Ajoutez le code suivant à l’activité du fichier manifeste.

 android:windowSoftInputMode="adjustResize" 

C’était le meilleur qui fonctionnait pour moi

 android:windowSoftInputMode="adjustNothing" 

Essayez-le!

 android:windowSoftInputMode="stateHidden|adjustNothing" 

Ce code fonctionne.

La fenêtre principale de l’activité ne sera pas redimensionnée pour faire place au clavier logiciel. Au contraire, le contenu de la fenêtre sera automatiquement déphasé de sorte que le focus actuel ne soit jamais masqué par le clavier et que les utilisateurs puissent toujours voir ce qu’ils tapent.

 android:windowSoftInputMode="adjustPan" 

Cela pourrait être une meilleure solution pour ce que vous avez souhaité.

Pour la vue de défilement:

si après avoir ajouté android:windowSoftInputMode="stateHidden|adjustPan" dans votre manifeste Android et ne fonctionne toujours pas.

Cela peut être affecté parce que lorsque le clavier apparaît, il sera dans une vue de défilement et si votre bouton / des objects ne sont pas dans votre vue de défilement, les objects suivront le clavier et déplaceront sa position.

Examinez votre fichier XML où se trouve votre bouton et assurez-vous qu’il se trouve sous le crochet de votre affichage de défilement et non hors de celui-ci.

J’espère que ça aide. :RÉ

Eh bien, j’ai regardé ces réponses, mais dans mon cas, je suis tombé dans le même problème et je me suis réfugié dans une solution très pratique qui consiste à placer un très petit atsortingbut innocent dans votre tag Scrollview. C’est

 android:isScrollContainer="false" 

Bonne chance!

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

Inclure dans votre fichier manifeste sous l’activité que vous souhaitez afficher .Mais assurez-vous de ne pas utiliser l’activité Plein écran

 android:windowSoftInputMode="adjustPan" 

Dans mon cas, j’avais besoin que le clavier rest caché et juste après le clic sur le bouton, ma mise en page doit être ajustée, alors j’ai simplement ajouté cette commande dans le manifeste et ça s’est super bien passé.

 android:windowSoftInputMode="stateHidden|adjustResize" 
 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); 

Celui-ci travaille pour moi.

@manifest dans votre activité:

 android:windowSoftInputMode="stateAlwaysHidden|adjustPan"