web-dev-qa-db-fra.com

Le clavier logiciel Android couvre le champ edittext

Existe-t-il un moyen de faire défiler l'écran pour permettre la visualisation du champ de texte?

147
Alexis

Demandez-vous comment contrôler ce qui est visible lorsque le clavier logiciel s'ouvre? Vous voudrez peut-être jouer avec windowSoftInputMode . Voir documentation développeur pour plus de discussion. 

152
Cheryl Simon

J'ai eu les mêmes problèmes. Essayez le code suivant:

Android:windowSoftInputMode="adjustPan"

ajoutez-le à votre fichier manifest.xml dans la balise d'activité de l'activité qui contient l'entrée. Exemple:

<activity
            Android:name=".Activities.InputsActivity"
            ...
            Android:windowSoftInputMode="adjustPan"
            />
146
Kuldeep Sakhiya

J'ai eu le même problème où le clavier logiciel était au-dessus des vues EditText qui ont été placées en bas de l'écran. J'ai pu trouver une solution en ajoutant une seule ligne à l'activité pertinente de mon fichier AndroidManifest.xml.

Android:windowSoftInputMode="adjustResize|stateHidden"

Voici à quoi ressemble toute la balise d'activité:

<activity
        Android:name="com.my.MainActivity"
        Android:screenOrientation="portrait"
        Android:label="@string/title_activity_main"
        Android:windowSoftInputMode="adjustResize|stateHidden" >
    </activity>

Ici, la valeur la plus importante est le paramètre adjustResize. Cela modifiera toute l'interface utilisateur pour laisser la place au clavier logiciel.

52
DanKodi

Pourquoi ne pas essayer d'ajouter un ScrollView pour envelopper tout ce que vous voulez faire défiler. Voici comment je l'ai fait, où je laisse en fait un en-tête qui ne défile pas, tandis que les widgets de dialogue (en particulier les EditTexts) défilent lorsque vous ouvrez le clavier virtuel.

<LinearLayout Android:id="@+id/HeaderLayout" >
  <!-- Here add a header or whatever will not be scrolled. -->
</LinearLayout>
<ScrollView Android:id="@+id/MainForm" >
  <!-- Here add your edittexts or whatever will scroll. -->
</ScrollView>

J'aurais généralement un LinearLayout à l'intérieur de ScrollView, mais cela dépend de vous. En outre, la définition du style de barre de défilement sur outsideInset aide, du moins sur mes appareils.

25
zmilojko

Tout ce que vous devez faire c'est 

Android:isScrollContainer="true"

source: http://www.davidwparker.com/2011/08/25/Android-fixing-window-resize-and-scrolling/

Désolé de faire revivre un ancien thread, mais personne n'a mentionné le paramètre Android:imeOptions="flagNoFullscreen" dans votre élément EditText

12
William Moffitt
Android:windowSoftInputMode="adjustPan"
Android:isScrollContainer="true"

fonctionne pour Android EditText, alors que cela ne fonctionne pas pour webview ou xwalkview. Lorsque le clavier logiciel masque la saisie dans webview ou xwalkview, vous devez utiliser Android:windowSoftInputMode="adjustResize"

5
Kris Roofe

Je pense que vous pouvez le faire défiler à l’aide de la boule de commande, ce qui pourrait éventuellement être réalisé par le biais de méthodes de sélection, mais c’est juste une idée. Je sais que la méthode du trackball fonctionne généralement, mais quant à la manière exacte de le faire et de le faire fonctionner à partir de code, je ne suis pas sûr.
J'espère que cela pourra aider.

4
Luis Miguel Serrano

ajoutez cette ligne à votre activité relative où la couverture du clavier a modifié la méthode d’activité text.inside onCreat ().

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
0
umesh shakya

Je sais que c'est vieux, mais aucune des solutions ci-dessus n'a fonctionné pour moi. Après un débogage approfondi, j'ai résolu le problème. La solution consiste à définir l'attribut Android:windowTranslucentStatus sur false dans my styles.xml.

0
Beast77