Le clavier logiciel Android n'apparaît jamais dans l'émulateur

86

Je suis nouveau sur Android. J'ai déjà passé deux heures à chercher. Tout ce que j'essaye, le clavier logiciel ne s'affiche jamais pour mon EditText. Je le crée simplement:

EditText editText = (EditText)findViewById(R.id.editText);

J'ai essayé:

 editText.requestFocus();//i tried without this line too
 InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
 imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);

et:

editText.setOnFocusChangeListener(new OnFocusChangeListener() {

         @Override
         public void onFocusChange(View v, boolean hasFocus) 
         {    

                     InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
                     imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);

         }
     });

j'ai aussi essayé:

getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);

j'ai essayé de mettre cette ligne dans le AndroidManifest.xmlfichier:

 android:windowSoftInputMode="stateVisible|adjustResize"

mais tout en vain. Cela ne se voit jamais. Qu'est-ce que je rate?

Andrey Chernukha
la source
le clavier s'ouvre-t-il dans une autre application?
Niranj Patel
essayez ceci remplacez imm.showSoftInput (editText, InputMethodManager.SHOW_IMPLICIT); ceci à imm.toggleSoftInput (InputMethodManager.SHOW_FORCED, 0);
Aravin
@CapDroid non, malheureusement. J'ai essayé dans une autre application mais toujours pas de chance
Andrey Chernukha
@Aravinth ne fonctionne toujours pas
Andrey Chernukha
Utilisez-vous un émulateur ou un appareil.
Aravin

Réponses:

211

Vous devez vous assurer que votre émulateur n'est pas configuré pour utiliser un clavier matériel . Cela peut être fait en choisissant Editun émulateur sélectionné dans l'AVD. Décochez ensuite le Hardware keyboard presentparamètre.

Vous pouvez également essayer d'utiliser un autre émulateur, tel que Genymotion . Il prend en charge l'accélération matérielle complète (processeur multicœur ainsi que GPU) et s'exécute beaucoup plus rapidement que toutes les images de l'émulateur Android. Si vous utilisez Genymotion, vous devrez désactiver le clavier matériel sous Android (voir ci-dessous pour plus de détails).

Pour désactiver le clavier matériel dans Genymotion:
Allez à Settings->Language & input et ouvrez l' Defaultélément sous Keyboard & Input Methods. Il existe un Hardwareparamètre que vous pouvez activer / désactiver. Lorsqu'il est activé, vous utilisez votre clavier physique et lorsqu'il est désactivé, le clavier virtuel standard devrait apparaître chaque fois qu'un champ de texte est sélectionné.

Captures d'écran pour les paramètres Genymotion: Élément par défaut

entrez la description de l'image ici

free3dom
la source
4
Finalement! Merci beaucoup. J'aimerais pouvoir voter deux fois pour votre réponse. Quant à Genymotion - j'ai passé une journée à essayer de le configurer mais cela n'a pas fonctionné. Je ne pouvais même pas écrire à leur soutien
Andrey Chernukha
Heureux de vous aider :) Quant à Genymotion, ils s'améliorent constamment, mais il est toujours en version préliminaire / bêta. Cependant, depuis que j'ai commencé à l'utiliser, je n'ai eu aucun problème. Peut-être que je viens de commencer avec ça une fois qu'ils ont réglé la plupart des problèmes - ou j'ai juste de la chance :). Cela dit, le ou les émulateurs Android offrent plus de variations, je les utilise donc toujours pour tester la compatibilité.
free3dom
C'est génial, maintenant j'ai un clavier virtuel! Mais j'ai un EditText avec android: inputType = "numberDecimal"> et virtualkeyboard n'écrit pas de nombres (il ne les écrit que si j'écris une lettre avant eux). Le correcteur orthographique est déjà désactivé ...
Michele
Jetez un œil ici pour les solutions possibles.
free3dom
@ free3dom ~ "ouvrir l'élément par défaut sous Clavier et méthodes de saisie" Qu'est-ce que c'est? Je ne vois pas cet article.
IgorGanapolsky
73

Dans la version 2.1.1 - cliquez sur les paramètres de votre appareil virtuel - puis cochez la case "utiliser le clavier virtuel pour taper". entrez la description de l'image ici

entrez la description de l'image ici

Sharif
la source
2

Il y a deux endroits pour désélectionner le clavier matériel dans AS 1.1.0. Celui-ci n'est pas suffisant:

entrez la description de l'image ici

Vous devez le faire (cliquez sur Tools | Android | AVD Manager; puis créez un nouvel AVD ou modifiez l'ancien AVD, puis cliquez sur Show Advanced Settings; faites défiler vers le bas et effacez Enable keyboard input):

entrez la description de l'image ici

DSlomer64
la source
J'ai passé du temps à trouver cette solution car l'indicateur de défilement est normalement parti et n'apparaît que lorsque vous commencez à faire défiler. Je recommanderais que si une vue est déroulante pour avoir une indication visuelle de cette possibilité.
GregM
Ne fonctionne pas pour moi dans Android Studio. Je décoche la case "Activer la saisie clavier" mais l'émulateur n'affiche toujours PAS le clavier logiciel.
Evgenii
Vous n'avez mentionné qu'un seul "décocher". L'autre est "Possède un clavier matériel", comme indiqué - et vous l'avez probablement déjà effacé. Essayez peut-être un autre appareil virtuel? J'ai trouvé l'émulateur AS assez difficile à tolérer. Lent à charger, bizarreries comme ça ... Bonne chance.
DSlomer64
2

La méthode d'activation du clavier virtuel à l'écran pour les émulateurs Android Studio 2+ dépend du niveau d'API de l'émulateur. J'ai testé les différentes méthodes à partir de l'API 15 et enregistré les étapes ci-dessous.

[A] API 15, 17, 19 et 21.

Les étapes suivantes activeront le clavier virtuel à l'écran mais désactiveront la possibilité de saisir du texte et d'interagir avec l'AVD à l'aide du clavier matériel de l'ordinateur.

  1. Dans Android Virtual Device Manager (AVD), cliquez sur l'action de modification de l'appareil avec lequel vous souhaitez travailler
  2. Cliquez sur Afficher les paramètres avancés et faites défiler vers le bas de la page jusqu'à la section "Clavier"
  3. Décochez l'option "Activer la saisie au clavier"

[B] API 22

Le clavier virtuel s'affiche quoi que vous fassiez avec les paramètres du clavier matériel. Si vous souhaitez activer la prise en charge du clavier matériel à côté du clavier virtuel,

  1. Dans AVD, cliquez sur l'action d'édition de l'appareil avec lequel vous souhaitez travailler
  2. Cliquez sur Afficher les paramètres avancés et faites défiler vers le bas de la page jusqu'à la section "Clavier"
  3. Cochez l'option "Activer la saisie au clavier"

[C] API 23

Si vous souhaitez utiliser le matériel et le clavier logiciel, alors ...

  1. Suivez [B] les étapes 1 à 3
  2. Sur l'appareil virtuel, lancez Paramètres, puis sélectionnez Langue et saisie / Clavier actuel
  3. Activer le matériel - Afficher la méthode d'entrée

Si vous n'avez pas besoin du clavier matériel, dans les paramètres avancés d'AVD, décochez l'option "Activer la saisie au clavier". Vous n'aurez pas besoin de modifier les paramètres de l'appareil virtuel.

[D] API 24 et 25

  1. Suivez [B] les étapes 1 à 3 ci-dessus, en cochant ou en décochant l'option «Activer la saisie au clavier» selon que vous souhaitez activer ou non le clavier matériel.
  2. Sur l'appareil virtuel, lancez Paramètres, puis sélectionnez Langue et saisie / Clavier physique
  3. Activer "Afficher le clavier virtuel"

Si l'option Activer l'entrée au clavier a été sélectionnée dans l'AVD, vous pourrez désormais utiliser à la fois les entrées clavier matériel et logiciel. Si vous décochez l'option dans l'AVD, le clavier virtuel s'affichera malgré tout.

[E] API 26

Exactement la même chose que les API [D] 24 et 25, sauf que vous devez naviguer dans un niveau de menu "Système" supplémentaire dans les paramètres de l'appareil avant d'accéder à Langue et saisie / Clavier physique

Will P
la source
1

Peut-être que votre émulateur ne prend pas en charge le clavier logiciel.

Ajoutez une propriété matérielle Prise en charge du clavier et définissez-la sur true pour votre émulateur.

Si c'est déjà vrai, vérifiez cette réponse.

Niranj Patel
la source
1

Montrer:

EditText editText = (EditText) findViewById(R.id.myEdit);
InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
// only will trigger it if no physical keyboard is open
mgr.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);

Et pour se cacher:

InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.hideSoftInputFromWindow(editText.getWindowToken(), 0);

Essayez celui-ci ...

FarhaSameer786
la source
cela n'a pas aidé, malheureusement
Andrey Chernukha
InputMethodManager imm = (InputMethodManager) getSystemService (Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput (InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY); ... essayez ceci
FarhaSameer786
@Andrey Chernukha-je pense que votre émulateur ne prend pas en charge le clavier logiciel ou le matériel de l'émulateur ne fonctionne pas correctement .....
FarhaSameer786