J'ai un bouton "enregistrer" que je veux pousser avec le clavier virtuel. Ainsi, lorsque l'utilisateur clique sur un EditText dans ma mise en page, le bouton doit rester au-dessus du clavier. Maintenant, le bouton est caché sous le clavier. Comment est-ce que tu fais ça?
Merci d'avance!
Vous devez définir le mode d'entrée de votre clavier sur adjustResize
. Vous pouvez le faire en ajoutant la ligne suivante aux attributs de votre activité dans le manifeste:
Android:windowSoftInputMode="adjustResize"
Voici un exemple de l'attribut ajouté dans l'activité:
<activity
Android:name=".activity.MyActivity"
Android:windowSoftInputMode="adjustResize">
</activity>
Avec la réponse d'Inthathep, vous devez ajouter un attribut dans le groupe de vues parent
Android:fitsSystemWindows="true"
pour le travailler comme vous le souhaitez. c'est-à-dire, dans le fichier manifeste, pour l'activité, ajoutez
Android:windowSoftInputMode="adjustResize"
et par exemple.
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:padding="10dp"
Android:fitsSystemWindows="true" <!-- add this -->
Android:orientation="vertical"
>
<EditText
Android:id="@+id/et_assetview_comment"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:minHeight="80dp"
Android:background="@color/white"
Android:hint="Enter comments"
/>
<Button
Android:id="@+id/btn_assetview_postcomment"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="POST"
/>
</LinearLayout>
Commandez votre mise en page comme ceci et vous pourrez mettre le bouton au-dessus du clavier
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
>
<ScrollView
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_above="@+id/button_next"
Android:background="#0ff"
>
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:orientation="vertical"
>
<EditText
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_marginTop="250dp"
Android:hint="Hint"
/>
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="ABC"
Android:textSize="50sp"
/>
</LinearLayout>
</ScrollView>
<Button
Android:id="@+id/button_next"
Android:layout_width="match_parent"
Android:layout_height="60dp"
Android:layout_alignParentBottom="true"
Android:layout_margin="10dp"
Android:text="Button Next"
/>
</RelativeLayout>
Dans Android Android
<application
...
>
<activity Android:name=".YourActivity"
Android:windowSoftInputMode="adjustResize"
>
</activity>
</application>
Notez qu'au lieu de RelativeLayout
, vous pouvez également utiliser un autre ViewGroup
comme LinearLayout
avec poids, CordinatorLayout
, ...
C'est donc un article assez ancien, mais j'ai eu du mal avec les réponses fournies. Oneavi et Intahep sont corrects, mais permettez-moi de vous montrer EXACTEMENT où le Android:windowSoftInputMode="adjustResize"
va.
dans Android Manifest
<activity Android:name=".DataScreen" />
<activity Android:name=".PauseScreen" />
<activity Android:name=".RouteInfo"
Android:windowSoftInputMode="adjustResize"> <!--This goes in the specific activity with the button -->
</activity>
La meilleure façon est de masquer la frappe et, si nécessaire, d'appuyer sur les boutons au-dessus du clavier
Android:windowSoftInputMode="adjustResize|stateHidden"