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é?
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"
accédez au fichier de manifeste de votre application et écrivez cette ligne pour cette activité que vous souhaitez désactiver.
Android:windowSoftInputMode="stateHidden"
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()
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
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>
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()
.
if(getWindow().getAttributes().softInputMode==WindowManager.LayoutParams.SOFT_INPUT_STATE_UNSPECIFIED)
{
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
}