J'ai quelques éléments dans un RelativeView avec l'attribut align bottom défini, lorsque le clavier virtuel apparaît, les éléments sont masqués par le clavier logiciel.
Je voudrais qu'ils se déplacent vers le haut pour que, s'il y a suffisamment d'espace sur l'écran, ils soient affichés au-dessus du clavier, ou pour que la section au-dessus du clavier puisse faire défiler afin que l'utilisateur puisse toujours voir les éléments.
Des idées sur la façon d'aborder cela?
Réponses:
Oui, consultez cet article sur le site des développeurs Android qui décrit comment le framework gère l'apparition du clavier virtuel.
L'
android:windowSoftInputMode
attribut peut être utilisé pour spécifier ce qui se passe sur une base par activité: si la mise en page est redimensionnée ou si elle défile, etc.la source
Vous pouvez également utiliser ce code dans la
onCreate()
méthode:la source
Ajoutez AndroidManifest.xml pour votre activité:
la source
Apportez des modifications à l'activité de votre fichier Manifest comme
OU
Apportez des modifications à votre
onCreate()
méthode dans la classe d'activité commela source
problème similaire auquel je faisais face avec ma mise en page qui consiste en une vue de 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 vers le haut avec le code ci-dessous en tant que telle, elle ne redimensionne pas la mise en page
En le modifiant comme ci-dessous
1) AndroidManifest.xml
2) fichier style.xml, en style activité
Ça a marché.!!!!!!!!!!!!
la source
Dans AndroidManifest.xml, n'oubliez pas de définir:
et pour RelativeLayout dans ScrollView, définissez:
ça ira
la source
pour Activity dans sa méthode oncreate, insérer sous la ligne
et pour les fragments dans sa méthode onCreate
la source
Il y a 3 étapes à suivre pour faire défiler l'écran vers le haut.
PS N'oubliez pas d'ajouter android: layout_gravity = "center" dans la disposition relative parent.
la source
J'ai essayé une méthode de Diego Ramírez, ça marche. Dans AndroidManifest:
Dans activity_main.xml:
la source
Ajoutez NestedScrollView autour de la mise en page que vous souhaitez faire défiler, cela fonctionnera parfaitement
la source
J'ai trouvé une solution à mes problèmes qui est à peu près 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 contient 2 EditText et un Button, donc je devais les garder séparés en plein écran sans clavier, et quand le clavier apparaît, ils devraient regarder de plus près.
J'ai donc ajouté la vue entre eux avec l'attribut height en 0dp et weight 1, ce qui m'a permis de garder mes vues séparées l'une de l'autre. et lorsque le clavier apparaît, comme il n'a pas de hauteur fixe, il se redimensionne simplement et conserve l'aspect.
Voila! Le redimensionnement de la disposition et la distance entre mes vues sont les mêmes lorsque le clavier est ou non présent.
la source
ConstraintLayout
et en épinglant une section supérieure en haut et une section inférieure en bas. Lorsque le clavier s'ouvre, il se redimensionnera naturellement en comprimant l'espace au milieu (si vous l'utilisezadjustResize
)la source
Voici le code manifeste complet
la source
si vous êtes dans des fragments, vous devez ajouter le code ci-dessous à votre onCreate sur votre activité, cela résout le problème pour moi
la source
Dans votre fichier manifeste, ajoutez la ligne ci-dessous. Ça va marcher
la source
Je viens d'ajouter la ligne suivante à la mise en page de niveau supérieur et tout a fonctionné:
la source
D'accord, c'est très tard, mais j'ai découvert que si vous ajoutez une vue de liste sous votre texte d'édition, le clavier déplacera toutes les mises en page sous cet edittext sans déplacer la vue de liste.
C'est la seule solution qui a fonctionné pour moi.
la source
Pas un seul conseil ne résout mon problème. Ajuster le panoramique ressemble presque au travail Ajuster le redimensionner . Si je ne règle rien à la mise en page, je ne bouge pas vers le haut, mais cela masque mon texte édité en bas que j'écris correctement. Donc, après 24 heures de recherche continue, j'ai trouvé cette source et cela résout mon problème.
la source
Il est peut-être tard mais je veux ajouter quelques éléments. Dans Android Studio version 4.0.1 et Gradle version 6.1.1, le
windowSoftInputMode
ne fonctionnera pas comme prévu si vous ajoutez les indicateurs suivants dans votre activité:Après avoir perdu beaucoup de temps, j'ai trouvé ce hack. Pour que
adjustResize
ouAdjustPan
ou tout attribut dewindowSoftInputMode
fonctionne correctement, vous devez le supprimer de votre activité.la source