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.
android: windowSoftInputMode = “adjustResize”
getWindow (). setSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
.........
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.