<FrameLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:orientation="vertical"
Android:layout_height="match_parent">
<LinearLayout
Android:layout_gravity="bottom"
Android:orientation="vertical"
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
<EditText
Android:layout_width="match_parent"
Android:layout_height="wrap_content" />
<Button
Android:layout_width="match_parent"
Android:layout_height="wrap_content" />
</LinearLayout>
</FrameLayout>
en manifeste:
Android:windowSoftInputMode="adjustPan"
Comportement initial:
Comportement actuel:
Comportement désiré:
Comment obtenir le comportement souhaité de la mise en page? adjustResize inadapté car cette option redimensionne la mise en page.
Merci pour les réponses!
Vous voulez probablement jeter un oeil à cette réponse . Une suggestion de celui-ci:
Définissez la propriété Window SoftInput Mode pour adjustPan et adjustResize.
<activity Android:windowSoftInputMode="adjustPan|adjustResize"> </activity>
Le seul moyen d’obtenir ce résultat est de redimensionner la disposition. Utilisez Android: windowSoftInputMode = "adjustResize"
essayez celui-ci dans votre manifeste:
Android:windowSoftInputMode="adjustResize|stateUnchanged"
Je ne crois pas qu'il existe un moyen simple de faire cela. Du moins pas aussi simple que de définir un drapeau. J'ai eu une situation similaire: vouloir que le clavier atteigne un niveau de vues bien inférieur au texte d'édition sélectionné. J'ai fini par utiliser cette réponse: Comment vérifier la visibilité du clavier logiciel sous Android?
et en ajustant manuellement les tailles de ma vue lorsque le clavier devient visible.
en supprimant au-dessous de la ligne d'activité et Android: windowSoftInputMode de manifest, j'ai obtenu le défilement de la présentation entière qui était auparavant masqué par
this.getWindow (). setFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
veuillez vérifier ce lien vidéo de sortie: https://mega.nz/#!TpRCWZjY!TqDzv0Yn3Q24PR1JAdH8kRVeDf2iSa1LQbNBgF0SVHk
la vérification si la disposition qui contient EditText et Button est RelativeLayout.
Essayez de changer FrameLayout
en RelativeLayout
avec la propriété alignParentBottom="true"
dans votre LinearLayout
:
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:orientation="vertical"
Android:layout_height="match_parent">
<LinearLayout
Android:layout_alignParentBottom="true"
Android:orientation="vertical"
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
<EditText
Android:layout_width="match_parent"
Android:layout_height="wrap_content" />
<Button
Android:layout_width="match_parent"
Android:layout_height="wrap_content" />
</LinearLayout>
</RelativeLayout>
Vous ne pourrez pas implémenter cela avec adjustPan
, car à partir du guide officiel
La fenêtre principale de l'activité n'est pas redimensionnée pour laisser de la place au clavier virtuel. Au lieu de cela, le contenu de la fenêtre est automatiquement balayé afin que le focus actuel ne soit jamais masqué par le clavier et que les utilisateurs puissent toujours voir ce qu'ils tapent. Cela est généralement moins souhaitable que le redimensionnement, car l'utilisateur peut avoir besoin de fermer le clavier logiciel pour accéder aux parties obscurcies de la fenêtre et interagir avec elles.
Votre Button
est en dessous de votre objectif actuel EditText
Il suffit d'utiliser cette propriété en activité
Android:windowSoftInputMode="adjustPan"