Comment puis-je créer un pied de page collant qui ne sera pas déplacé vers le haut avec la vue lorsque le clavier de touche programmable apparaît?
Vous trouverez ci-dessous un exemple d’image de ma configuration actuelle et de ce que je veux réaliser .. J'ai un scrollview qui contient le contenu de ma page et un affichage linéaire aligné sur le bas du parent qui fait office de barre de navigation.
Le problème est que lorsque le clavier apparaît, il affiche toute ma vue, y compris la section de navigation inférieure. Je ne veux pas désactiver la remontée automatique de la vue (en définissant Android:windowSoftInputMode="adjustPan"
) mais plutôt exclure un seul élément de sa montée, ma barre de navigation inférieure.
J'ai testé le correctif windowSoftInputMode mais il cache le contenu de ma page derrière le clavier. Y a-t-il un moyen de le faire continuer à faire défiler le scrollview mais pas la navigation du bas? Mon autre option était de régler visibility:gone
sur le clavier et de le rediffuser sur le clavier, mais cela semble trop compliqué et pas toujours fiable à partir de ce que j'ai lu.
Si quelqu'un a des exemples ou des suggestions, je suis tout ouïe. Merci.
Soit ajouter ceci comme attribut XML de la barre de défilement
Android: isScrollContainer = "false"
ou ajouter ceci dans la balise d'activité dans Manifest
Android: windowSoftInputMode = "adjustPan"
J'ai essayé beaucoup de solutions trouvées sur SO et en ajoutant seulement Android: windowSoftInputMode = "adjustNothing" dans le manifeste pour que l'activité fonctionne pour moi:
<activity
Android:name=".MainActivity"
Android:windowSoftInputMode="adjustNothing">
Mise en page associée:
<RelativeLayout
...
<Android.support.v4.widget.NestedScrollView
...
</Android.support.v4.widget.NestedScrollView>
<Android.support.design.widget.BottomNavigationView
...
design:menu="@menu/navigation"/>
</RelativeLayout>
Ajoutez simplement cette ligne dans votre onCreate
, Lorsque cette option permet de ne pas ajuster la fenêtre pour une méthode de saisie affichée. :
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
J'ai rencontré un problème assez similaire avec les différences suivantes: a) je n'utilisais pas d'abord une ScrollView et b) l'élément que je ne voulais pas déplacer était une simple TextView.
Voici la réponse que j'ai trouvée: click
Ce que j'ai fait pour le réparer:
adjustResize
Android:layout_alignParentBottom="true"
, bien que cela déplace la barre de navigation en bas de l'écran, cela signifie également que le clavier peut la déplacer vers le haut en raison de la fonction "ajuster-redimensionner"Android:layout_height="wrap_content"
en combinaison avec Android:layout_below="@id/MyScrollView"
(pour que la mise en page prenne tout l'espace qu'il peut occuper entre ScrollView et le bas de l'écran) et Android:gravity="bottom"
pour tout avoir en bas de la mise en page.Android:layout_height="match_parent"
au lieu de Android:layout_alignParentBottom="true"
et Android:layout_height="wrap_content"
mais je ne l'ai pas complètement testé comme ça.