/ / Puis-je utiliser le clavier logiciel sans EditText? - android, android-edittext, android-softkeyboard

Puis-je utiliser le clavier logiciel sans EditText? - android, android-edittext, android-softkeyboard

Je crée un simple jeu de frappe sous Android. Je n’ai aucun problème à obtenir une entrée du clavier physique, mais j’essaie maintenant de faire en sorte que le clavier logiciel apparaisse sans EditText. J’ai déjà essayé ce qui suit:

1. EditText avec visibilité = "invisible" et cette ligne:

((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(keyboard_edittext, InputMethodManager.SHOW_FORCED); // SHOW_IMPLICIT also failed

2. Cette ligne dans le onCreate():

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

Cette méthode affiche en fait une case blanche vide dans les 10% inférieurs de l'écran, mais pas le clavier, bien que, lorsque je l'exécute maintenant, cela ne fait rien.

3. Deux autres lignes dans le onCreate():

InputMethodManager m = (InputMethodManager)this.getSystemService (Context.INPUT_METHOD_SERVICE); m.toggleSoftInput(0, InputMethodManager.SHOW_IMPLICIT);

Pas de chance sur aucun de ceux-ci. Est-il même possible d'afficher le clavier virtuel (puis d'utiliser onKeyUp/onKeyDown) sans se focaliser sur un EditText?

À l’heure actuelle, la seule façon de procéder consiste à créer ma propre implémentation du clavier logiciel (c’est-à-dire de le construire à partir de rien). Pas hâte de ça!

Réponses:

4 pour la réponse № 1

Le code suivant fonctionne pour moi:

 InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput (InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);

J'utilise ce code dans un gestionnaire onKeyUp lorsque j'appuie sur le bouton "Menu".


3 pour la réponse № 2

À la place d'utiliser visibility="invisible" vous pouvez définir android:alpha="0" sur votre EditText. Donc, vous avez toujours besoin d’un texte d’édition mais il n’est pas visible et vous pouvez obtenir l’entrée du clavier logiciel onKeyListener()


2 pour la réponse № 3

Vous pouvez forcer l'affichage du clavier logiciel en utilisant:


InputMethodManager im = (InputMethodManager)getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
im.showSoftInput(myView, InputMethodManager.SHOW_FORCED);


2 pour la réponse № 4

Assurez-vous d'activer le clavier logiciel pour votre vue:

setFocusable(true);
setFocusableInTouchMode(true);

Puis appelez:

InputMethodManager mgr = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.showSoftInput(this, InputMethodManager.SHOW_IMPLICIT);

1 pour la réponse № 5

Notez que si vous travaillez en mode paysage, la saisie logicielle créera son propre champ de saisie de texte, ce qui gâchera tout votre travail. Vous pouvez empêcher ce comportement:

// This makes us remain invisible when in landscape mode.
setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);

Maintenant, si vous avez configuré un EditText invisible, il restera tel que vous l'avez créé.