web-dev-qa-db-fra.com

Comment faire défiler toute la mise en page lorsque le clavier est affiché?

<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:

enter image description here

Comportement actuel:

enter image description here

Comportement désiré:

enter image description here

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!

20
Sinigami

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>
4
Andrew Orobator

Le seul moyen d’obtenir ce résultat est de redimensionner la disposition. Utilisez Android: windowSoftInputMode = "adjustResize" 

2
dledo

essayez celui-ci dans votre manifeste:

Android:windowSoftInputMode="adjustResize|stateUnchanged"
2
No Name

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.

1
Graydyn Young

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

1
Chirag Jain

la vérification si la disposition qui contient EditText et Button est RelativeLayout.

1
Liran Peretz

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>  
1
rom4ek

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

1
gio

Il suffit d'utiliser cette propriété en activité

Android:windowSoftInputMode="adjustPan"
0
Harv