144 votes

Le clavier à l'écran d'Android s'affiche automatiquement

L'une de mes applications possède un "écran d'ouverture" (en fait un menu) qui comporte un bouton de commande. EditText suivi de plusieurs Button s. Le problème est que plusieurs de mes utilisateurs signalent que lorsqu'ils ouvrent l'application, le clavier à l'écran s'affiche automatiquement sans qu'ils aient à toucher l'écran. EditText . D'après ce que je peux dire, tous ces utilisateurs utilisent le programme HTC Hero .

S'agit-il d'un bug de la version 1.5 ? Y a-t-il quelque chose que je puisse faire à ce sujet ?

1 votes

Si c'est un bug, c'est probablement dans le Sprint Hero spécifiquement. Sprint a une version boguée d'Android sur les Hero qu'ils vendent et ils ne semblent pas pressés d'y apporter des correctifs. Il y a des tonnes de différences de comportement entre les Hero de Sprint et tous les autres appareils Android. Pour autant que je sache, les autres versions du Hero, comme celles en Europe, n'ont pas ces problèmes.

0 votes

Malheureusement, les Hero ici en Europe ont des problèmes majeurs, ils changent en fonction du numéro de construction mais nous avons rencontré 3 - 4 bugs majeurs.

290voto

Donal Rafferty Points 7914

Vous pouvez utiliser la ligne de code suivante dans la méthode onCreate de l'activité pour vous assurer que le clavier ne s'affiche que lorsqu'un utilisateur clique sur un EditText

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

0 votes

Cela ne fonctionne pas pour moi (2.2 MyTouch 3G). Dans ma méthode onCreate(), j'appelle setSoftInputMode(). L'EditText fait toujours apparaître le clavier :(

0 votes

Ça a marché pour moi. J'utilise Android 2.3.4 et je développe en utilisant <uses-sdk Android:minSdkVersion="3" />.

83 votes

Ou utilisez android:windowSoftInputMode="stateHidden" comme aquí

87voto

mourngrym1969 Points 431
<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".Main"
              android:label="@string/app_name"
              android:windowSoftInputMode="stateHidden"
              >

Cela fonctionne pour Android 3.0, 3.1, 3.2, 4.0 - Editeur utilisé pour compiler (Eclipse 3.7)

Placez l'option 'windowSoftInputMode="stateHidden"' dans le fichier XML du manifeste de votre application pour CHAQUE activité dans laquelle vous souhaitez que le clavier logiciel reste caché. Cela signifie que le clavier ne s'affichera pas automatiquement et que l'utilisateur devra "cliquer" sur un champ de texte pour le faire apparaître. J'ai cherché pendant près d'une heure quelque chose qui fonctionnait et j'ai pensé que je devais le partager.

0 votes

La meilleure solution que j'ai trouvée jusqu'à présent. Focalise le champ sans ouvrir le clavier. Fonctionne sur Nexus S avec 4.1.2

2 votes

Android:windowSoftInputMode="stateHidden|adjustNothing" est également utile si vous utilisez des fragments et que vous ne voulez pas que le clavier modifie la disposition.

6voto

Ce code fonctionnera sur toutes les versions d'Android :

@Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_login);

 //Automatic popping up keyboard on start Activity

     getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);

 or

 //avoid automatically appear android keyboard when activity start
     getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
 }

6voto

Arun Points 73

Ajoutez ceci dans votre AndroidManifest.xml :

android:windowSoftInputMode="stateHidden|adjustResize"

Cela fonctionne parfaitement. :)

6voto

Ben Points 544

Ajoutez ceci dans la disposition parentale du XML.

android:focusable="true" 
android:focusableInTouchMode="true"

Cela permet de s'assurer que le focus n'est pas sur l'editText lorsque l'activité démarre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X