Comment arrêter le clavier logiciel Android de jamais dans mon application entière

StackOverflow https://stackoverflow.com/questions/2429595

  •  19-09-2019
  •  | 
  •  

Question

Je développe une application sur un dispositif matériel qui a un clavier intégré dans le matériel qui ne glisse pas si est toujours visible (comme une mûre). Par conséquent, je ne veux plus jamais le clavier logiciel pour afficher mon application entière. Je suis conscient de une autre question SO qui donne les éléments suivants lignes de code:

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

Mais je ne sais pas où mettre ce code pour masquer le clavier souple dans tous les endroits où il pourrait éventuellement apparaître dans mon activité. Je l'ai essayé d'ajouter le code à Activity.onUserInteraction en vain. Il semble que le clavier apparaît après le onUserInteraction exécute.

J'ai aussi essayé d'ajouter ce qui suit à mon <Activity>:

<activity 
    android:windowSoftInputMode="stateAlwaysHidden"
>

Clavier souple apparaît toujours.

Était-ce utile?

La solution

Votre application ne doit pas faire quoi que ce soit. Le firmware de l'appareil doit contenir une configuration qui empêche le clavier virtuel basé sur le clavier matériel étant visible, tout comme tous les autres appareils Android qui dispose d'un clavier matériel. Si cela ne se produit pas, parler au fabricant de matériel et de voir si elles ont l'intention de régler ce problème.

Autres conseils

Une solution facile pour la présentation de demain:

Je voudrais créer une nouvelle avec une vue IME vide. Voici deux projets opensource pour que vous regardiez un code.

Si vous voulez en savoir plus sur les méthodes d'entrée, allez à Création d'une méthode d'entrée .

Si un EditText a une inputType de 0, le clavier virtuel ne sera jamais apparaître lorsque ce EditText est sélectionné.

EditText editText = findViewById(R.id.edit_text);
editText.setInputType(0);

Ce sera bien sûr besoin d'être fait pour tous les EditTexts dans votre application, ou vous pouvez toujours sous-classe EditText et définir le type d'entrée à 0 dans votre constructeur.

Réglage du paramètre inputType xml ne fera pas, car cela correspond à un appel à la méthode de setRawInputType, qui ne supprime pas le KeyListener.

Je l'ai résolu en remplaçant la méthode onCheckIsTextEditor dans mon EditText un peu sur mesure.

@Override
public boolean onCheckIsTextEditor() {
    return false;
}

Où que vous avez Modifier le texte, mettre ce code ..

edittext.setInputType(InputType.TYPE_NULL);      
if (android.os.Build.VERSION.SDK_INT >= 11)   
{  
    edittext.setRawInputType(InputType.TYPE_CLASS_TEXT);  
    edittext.setTextIsSelectable(true);  
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top