2010-06-14 6 views
26

Dans une application Android, chaque fois que l'activité est lancée, la zone de texte est mise au point et le clavier virtuel s'affiche automatiquement. J'ai essayé d'arrêter cela en utilisant la ligne suivante dans la méthode onCreate, mais cela ne fonctionne pas.Comment empêcher l'ouverture du clavier logiciel lors du lancement d'une activité sur Android?

((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(EditText.getWindowToken(), 0); 

Répondre

91

Je sais que c'est vieux, mais peut-être cela aidera quelqu'un à l'avenir ...

Je n'ai pas vu quelqu'un suggérer « stateHidden »

From the Android docs - android:windowSoftInputMode

Votre fichier manifeste ressemblerait à ceci:

<activity 
    ... 
    android:windowSoftInputMode="stateHidden|adjustResize" 
    ... 
> 
+3

c'est plus simple. – Robert

2

Est-ce que ce qui suit fonctionne?

// Find editor 
EditText editWindowInstance = this.findViewById(R.id.MyEditWindow); 

// close soft keyboard 
((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(editWindowInstance.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); 
+0

Non, cela ne fonctionne pas. – Adnan

+0

Comment utiliser "hideSoftInputFromWindow (editWindowInstance, ...)" au lieu de "editWindowInstance.getWindowToken()"? –

18

Vous pouvez utiliser la ligne de code suivante pour vous assurer que le clavier apparaît uniquement lorsque l'utilisateur clique dans un EditText

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

Et

Vous devez ajouter

android: windowSoftInputMode = "adjustResize"

à votre tag d'activité dans le fichier AndroidManifest.xml.

+0

Cela fonctionne, mais lorsque je clique sur la zone de texte pour taper, le clavier apparaît au-dessus de la zone de texte et je ne vois pas ce que je tape. La zone de texte est en bas de l'écran. – Adnan

+0

Vous devez ajouter android: windowSoftInputMode = "adjustResize" à votre balise dans le fichier AndroidManifest.xml. –

+0

android: windowSoftInputMode = "adjustResize" est défini dans AndroidManifest.xml mais reste le même problème. Il y a un bouton dans le même écran aussi. J'ai essayé de déplacer le focus sur le bouton en utilisant: btn.setFocusable (true); btn.requestFocus(); Mais toujours l'accent est mis sur TextView. Je ne sais pas ce que je fais de mal. – Adnan

0

Le code suivant fonctionne pour moi

((InputMethodManager) iClockActivity 
        .getSystemService(Context.INPUT_METHOD_SERVICE)) 
        .showSoftInput(textView, 0); 
+0

J'ai essayé cela, mais toujours le même problème. – Adnan

0

Cela fonctionne parfaitement, essayez cette

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

Et ajoutez ce qui suit à votre manifeste.

android:windowSoftInputMode="stateHidden|adjustResize" 

hourras profiter de codage ....

1

Vous pouvez mettre ce code dans votre Activity.onCreate. this.getWindow() setSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

Mais je trouve que la façon la plus fiable et propre était de mettre simplement l'accent sur une vue différente, dans votre XML activité mise en page

<Button 
    android:id="@+id/mybutton"> 
    <requestFocus /> 
</Button> 
Questions connexes