Déplacer les dispositions vers le haut lorsque le clavier logiciel est affiché?

J’ai quelques éléments dans un RelativeView avec l’atsortingbut d’alignement inférieur, lorsque le clavier logiciel apparaît, les éléments sont masqués par le clavier logiciel.

Je voudrais qu’ils progressent pour que, s’il y a suffisamment d’espace sur l’écran, ils apparaissent au-dessus du clavier ou pour que la section au-dessus du clavier puisse défiler afin que l’utilisateur puisse toujours voir les éléments.

Des idées sur la façon d’aborder cette question?

Oui, consultez cet article sur le site des développeurs Android qui décrit comment le framework gère le clavier virtuel.

L’atsortingbut android:windowSoftInputMode peut être utilisé pour spécifier ce qui se passe par activité: si la mise en page est redimensionnée ou si elle défile, etc.

Vous pouvez également utiliser ce code dans la méthode onCreate() :

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

Ajouter dans AndroidManifest.xml pour votre activité:

 android:windowSoftInputMode="adjustPan|adjustResize" 

Apportez des modifications à l’activité de votre fichier manifeste comme

 windowSoftInputMode="adjustResize" 

OU

Apportez des modifications à votre méthode onCreate() dans la classe d’activité comme

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

problème similaire que je faisais face à ma mise en page qui consistent en vue défilement à l’intérieur. Chaque fois que j’essaie de sélectionner du texte dans EditText, la barre d’action Copier / Couper / Coller est déplacée avec le code ci-dessous, elle ne redimensionne pas la mise en page.

 android:windowSoftInputMode="adjustPan" 

En le modifiant comme ci-dessous

1) AndroidManifest.xml

 android:windowSoftInputMode="stateVisible|adjustResize" 

2) fichier style.xml, en style d’activité

 true 

Ça a marché.!!!!!!!!!!!!

Dans AndroidManifest.xml, n’oubliez pas de définir:

  android:windowSoftInputMode="adjustResize" 

et pour RelativeLayout dans ScrollView, définissez:

  android:layout_gravity="center" or android:layout_gravity="bottom" 

ça ira

Il y a 3 étapes à suivre pour faire défiler l’écran vers le haut.

  1. Écrivez dans le fichier manifeste de votre activité:

android: windowSoftInputMode = “adjustResize”

  1. Ajouter la ligne suivante dans la méthode oncreate () de votre activité

getWindow (). setSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

  1. Ensuite, placez votre vue entière dans “Scrollview” dans un fichier XML comme:
     .........        

PS N’oubliez pas d’append android: layout_gravity = “center” dans la mise en page relative parent.

J’ai essayé une méthode de Diego Ramírez, ça marche. Dans AndroidManifest:

   ...  

Dans activity_main.xml:

     ...  

pour Activity dans sa méthode oncreate, insérez la ligne ci-dessous

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

et pour les fragments dans sa méthode onCreate

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

J’ai trouvé une solution à mes problèmes, qui est la même que la vôtre.

Tout d’abord, je n’ai qu’un LinearLayout avec 2 éléments, un ImageView et un LinearLayout qui contiennent 2 EditText et un Button. Je devais donc les séparer en plein écran sans clavier, et quand le clavier apparaît, ils devraient ressembler.

Donc, j’ai ajouté la vue entre eux avec l’atsortingbut height dans 0dp et le poids 1, ce qui me permet de garder mes vues séparées les unes des autres. et quand le clavier apparaît, comme ils n’ont pas de hauteur fixe, ils redimensionnent et conservent l’aspect.

Voila! La disposition est redimensionnée et la distance entre mes vues est la même lorsque le clavier est présent ou non.

Voici le code manifeste complet

       

si vous êtes en fragments, vous devez append le code ci-dessous à votre onCreate sur votre activité, il résout le problème pour moi

 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); 

Bon, c’est très tard mais j’ai découvert que si vous ajoutez une vue de liste sous votre texte de modification, le clavier déplacera toutes les mises en page sous cet edittext sans déplacer la liste.

   ** 

C'est la seule solution qui a fonctionné pour moi.