web-dev-qa-db-fra.com

Android: comment appuyer sur le bouton au-dessus du clavier virtuel

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!

44
Xander

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>
92
Intathep

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>
26
oneavi

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>

enter image description here

Notez qu'au lieu de RelativeLayout, vous pouvez également utiliser un autre ViewGroup comme LinearLayout avec poids, CordinatorLayout, ...

13
Phan Van Linh

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>
6
Nathan O'Kane

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"
1
iman hoshmand