web-dev-qa-db-fra.com

Comment supprimer la mise au point automatique / le menu contextuel du clavier d'un champ lorsque l'écran apparaît?

J'ai un écran où le premier champ est un EditText, et il gagne le focus au démarrage, affiche également le type d'entrée numérique, ce qui est très ennuyeux

Comment puis-je m'assurer que la mise au point n'est pas gagnée et/ou que le panneau de saisie n'est pas ouvert au début de l'activité?

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

ou

définir la propriété activity dans le fichier manifeste comme indiqué ci-dessous dans la balise d'application

Android:windowSoftInputMode="stateHidden"
146
Mitul Nakum

accédez au fichier de manifeste de votre application et écrivez cette ligne pour cette activité que vous souhaitez désactiver.

Android:windowSoftInputMode="stateHidden"
142
sm.euro

Pour que le clavier ne soit pas programmé mais que le widget par défaut reçoive toujours l'appel du focus:

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

dans onResume()

19
danmux
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

appelle la méthode ci-dessus à l'intérieur de onCreate (). Cela empêche softKeyboard de s'afficher sauf si l'utilisateur sélectionne EditText par tapping or clicking.

ou simplement ajouter Android:windowSoftInputMode="stateHidden" dans la balise d'activité dans Manifest.xml

10
Xar-e-ahmer Khan

C'est généralement un gâchis. La première chose que j'essaie est d'essayer de voler le focus avec une autre vue via. Vous devez également avoir le focusable et focusableInTouchMode.

<TextView
  ...
  Android:focusable="true"
  Android:focusableInTouchMode="true">

    <requestFocus/>
</TextView>
5
urSus

Avoir une autre vue saisir le focus. Par défaut, la première vue focalisable est activée lorsque la disposition est gonflée. Vous pouvez demander la focalisation sur une vue différente via XML:

<TextView
    Android:layout_width="wrap_parent"
    Android:layout_height="wrap_content"
    Android:text="Some other view">

    <requestFocus />
</TextView>

Cela fonctionne pour n'importe quelle vue.

Si vous voulez le faire par programme, vous pouvez utiliser view.requestFocus().

4
Jason Robinson
if(getWindow().getAttributes().softInputMode==WindowManager.LayoutParams.SOFT_INPUT_STATE_UNSPECIFIED)
{
    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
}
0
paul Liang