web-dev-qa-db-fra.com

Le clavier à l'écran Android apparaît automatiquement

Une de mes applications a un "écran d'ouverture" (essentiellement un menu) qui a une EditText suivie de plusieurs Buttons. Le problème est que plusieurs de mes utilisateurs signalent que, lorsqu'ils ouvrent l'application, celle-ci affiche automatiquement le clavier à l'écran sans même toucher à la EditText. Autant que je sache, tous ces utilisateurs utilisent le HTC Hero

Est-ce un bug dans la 1.5? Y a-t-il quelque chose que je puisse faire à ce sujet?

131
Jeremy Logan

Vous pouvez utiliser la ligne de code suivante dans la méthode onCreate de l'activité pour vous assurer que le clavier apparaît uniquement lorsqu'un utilisateur clique dans un EditText.

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
265
Donal Rafferty
<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 le 'windowSoftInputMode = "stateHidden"' dans le fichier XML manifeste de votre application pour CHAQUE activité pour laquelle le clavier du logiciel doit rester caché. Cela signifie que le clavier ne s'affichera pas automatiquement et que l'utilisateur devra cliquer sur un bouton de la souris. champ de texte pour le mettre en place. J'ai cherché pendant presque une heure quelque chose qui fonctionnait alors j'ai pensé partager.

83
mourngrym1969

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);
 }
5
Satheeshkumar Somu

Ajoutez ceci dans votre AndroidManifest.xml :

Android:windowSoftInputMode="stateHidden|adjustResize"

Ça fonctionne parfaitement. :)

5
Arun

Vous pouvez utiliser soit cela dans la méthode onCreate () de l'activité

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

ou collez ce code dans les balises d'activité dans AndroidManifest.xml

Android:windowSoftInputMode="stateVisible"
3
sommer

Vous pouvez ajouter une seule ligne de code dans Android Manifest.xml sous balise d'activité

 <activity
        Android:name="com.sams.MainActivity"
        Android:windowSoftInputMode="stateVisible" >
 </activity>

cela peut vous aider.

2
Mohanraj

Ajoutez ceci dans la disposition parent du XML.

Android:focusable="true" 
Android:focusableInTouchMode="true"

Cela garantit que le focus n'est pas sur editText lorsque l'activité commence.

1
Ben

Vous pouvez le faire par programme comme 

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editTextField.getWindowToken(), 0);

ou définissez Android:windowSoftInputMode="stateHidden" dans <activity tag à l'intérieur de AndroidManifest.xml

1
Xar-e-ahmer Khan

Dans cette version d'Android, lorsqu'une vue est gonflée, le focus est défini par défaut sur le premier contrôle focusable. S'il n'y a pas de clavier physique, le clavier à l'écran s'affiche.

Pour résoudre ce problème, définissez explicitement le focus ailleurs. Si focus est défini sur autre chose qu'un EditText, le clavier à l'écran n'apparaîtra pas.

Avez-vous essayé de tester cela en exécutant Android 1.5 dans l'émulateur?

1
dmazzoni
InputMethodManager imm = (InputMethodManager)GetSystemService(Context.InputMethodService);
        imm.ShowSoftInput(_enterPin.FindFocus(), 0);

* Ceci est pour Android.xamarin et FindFocus () - il recherche la vue dans la hiérarchie basée sur cette vue qui a actuellement le focus, comme j'ai _enterPin.RequestFocus () avant le code ci-dessus, ainsi il affiche le clavier pour _enterPin EditText *

0
Ruchira

Incluez ceci là où les importations sont sur le dessus:

import Android.view.WindowManager;

Ajoutez ce code sur la partie OnCreate:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ....
    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
}
0
Mike Zriel