Das Android-Softkeyboard wird im Emulator nie angezeigt

85

Ich bin neu in Android. Ich habe bereits zwei Stunden für die Suche aufgewendet. Was auch immer ich versuche, Softkeyboard wird für meine nie gezeigt EditText. Ich erstelle es einfach:

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

Ich habe es versucht:

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

und:

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);

         }
     });

Ich habe auch versucht:

getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);

Ich habe versucht, diese Zeile in eine AndroidManifest.xmlDatei zu setzen:

 android:windowSoftInputMode="stateVisible|adjustResize"

aber alles umsonst. Es zeigt sich einfach nie. Was vermisse ich?

Andrey Chernukha
quelle
öffnet sich die Tastatur in einer anderen Anwendung?
Niranj Patel
Versuchen Sie dies, um imm.showSoftInput zu ersetzen (editText, InputMethodManager.SHOW_IMPLICIT); dies zu imm.toggleSoftInput (InputMethodManager.SHOW_FORCED, 0);
Aravin
@ CapDroid nein leider. Ich habe es in einer anderen Anwendung versucht, aber immer noch kein Glück
Andrey Chernukha
@ Aravinth funktioniert immer noch nicht
Andrey Chernukha
Verwenden Sie einen Emulator oder ein Gerät?
Aravin

Antworten:

211

Sie müssen sicherstellen, dass Ihr Emulator nicht für die Verwendung einer Hardwaretastatur eingestellt ist . Dies kann durch Auswahl Editeines ausgewählten Emulators in der AVD erfolgen. Dann deaktivieren Sie die Hardware keyboard presentEinstellung.

Sie können auch versuchen, einen anderen Emulator wie Genymotion zu verwenden . Es unterstützt die vollständige Hardwarebeschleunigung (Multi-Core-CPU sowie GPU) und läuft viel schneller als alle Android-Emulator-Images. Wenn Sie Genymotion verwenden, müssen Sie die Hardwaretastatur in Android deaktivieren (Details siehe unten).

So deaktivieren Sie die Hardwaretastatur in Genymotion:
Gehen Sie zu Settings-> Language & inputund öffnen Sie das DefaultElement unter Keyboard & Input Methods. Es gibt eine HardwareEinstellung, die Sie ein- und ausschalten können. Wenn es auf verwenden Sie Ihre physische Tastatur und wenn es aus dem Standard - Soft - Tastatur sollte Pop-up , wenn ein Textfeld den Fokus erhält.

Screenshots für Genymotion-Einstellungen: Standardelement

Geben Sie hier die Bildbeschreibung ein

free3dom
quelle
4
Schließlich! Vielen Dank. Ich wünschte, ich könnte Ihre Antwort zweimal positiv bewerten. Was Genymotion betrifft - ich habe einmal einen Tag damit verbracht, es einzurichten, aber es hat nicht funktioniert. Ich konnte nicht einmal an ihre Unterstützung schreiben
Andrey Chernukha
Ich bin froh zu helfen :) Genymotion verbessert sich ständig, aber es ist immer noch Preview / Beta. Seit ich damit angefangen habe, hatte ich jedoch kein einziges Problem. Könnte sein, dass ich gerade damit angefangen habe, nachdem sie die meisten Probleme gelöst hatten - oder ich habe einfach Glück :). Das heißt, die Android-Emulatoren bieten jedoch mehr Variationen, sodass ich sie immer noch zum Testen der Kompatibilität verwende.
free3dom
Das ist großartig, jetzt habe ich eine virtuelle Tastatur! Aber ich habe einen EditText mit Android: inputType = "numberDecimal"> und virtualkeyboard schreibt keine Zahlen (es schreibt sie nur, wenn ich einen Buchstaben vor ihnen schreibe). Rechtschreibprüfung ist bereits ausgeschaltet ...
Michele
Suchen Sie hier nach möglichen Lösungen.
free3dom
@ free3dom ~ "Öffnen Sie das Standardelement unter Tastatur- und Eingabemethoden." Was ist das? Ich sehe diesen Gegenstand nicht.
Igor Ganapolsky
73

Klicken Sie in Version 2.1.1 auf die Einstellungen Ihres virtuellen Geräts und aktivieren Sie das Kontrollkästchen "Virtuelle Tastatur zum Tippen verwenden". Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Sharif
quelle
2

In AS 1.1.0 gibt es zwei Stellen, an denen die Auswahl der Hardwaretastatur aufgehoben werden kann. Dieser ist nicht ausreichend:

Geben Sie hier die Bildbeschreibung ein

Muss dies tun (klicken Tools | Android | AVD Manager; dann neue AVD erstellen oder alte AVD bearbeiten und dann klicken Show Advanced Settings; nach unten scrollen und löschen Enable keyboard input):

Geben Sie hier die Bildbeschreibung ein

DSlomer64
quelle
Ich habe Zeit damit verbracht, diese Lösung zu finden, da die Bildlaufanzeige normalerweise nicht mehr angezeigt wird und erst angezeigt wird, wenn Sie mit dem Bildlauf beginnen. Ich würde empfehlen, wenn eine Ansicht scrollbar ist, um einen Hinweis auf diese Möglichkeit visuell zu haben.
GregM
Funktioniert nicht für mich in Android Studio. Ich deaktiviere die Option "Tastatureingabe aktivieren", aber der Emulator zeigt die Softwaretastatur immer noch NICHT an.
Evgenii
Sie haben nur ein "Uncheck" erwähnt. Das andere ist "Hat Hardware-Tastatur", wie gezeigt - und Sie haben es wahrscheinlich auch schon gelöscht. Vielleicht versuchen Sie es mit einem anderen virtuellen Gerät? Ich habe festgestellt, dass der AS-Emulator ziemlich schwer zu tolerieren ist. Langsam zu laden, Macken wie diese ... Viel Glück.
DSlomer64
2

Die Methode zum Aktivieren der Bildschirm-Softtastatur für Android Studio 2+ -Emulatoren hängt von der API-Ebene des Emulators ab. Ich habe die verschiedenen Methoden beginnend mit API 15 getestet und die folgenden Schritte aufgezeichnet.

[A] APIs 15, 17, 19 und 21.

Die folgenden Schritte aktivieren die Softtastatur auf dem Bildschirm, deaktivieren jedoch die Möglichkeit, Text einzugeben und über die Hardware-Computertastatur mit der AVD zu interagieren.

  1. Klicken Sie im Android Virtual Device Manager (AVD) auf die Bearbeitungsaktion für das Gerät, mit dem Sie arbeiten möchten
  2. Klicken Sie auf Erweiterte Einstellungen anzeigen und scrollen Sie bis zum Ende der Seite zum Abschnitt "Tastatur"
  3. Deaktivieren Sie die Option "Tastatureingabe aktivieren"

[B] API 22

Die Softtastatur wird angezeigt, unabhängig davon, was Sie mit den Hardwaretastatureinstellungen tun. Wenn Sie die Unterstützung von Hardwaretastaturen neben der Softtastatur aktivieren möchten,

  1. Klicken Sie in AVD auf die Bearbeitungsaktion für das Gerät, mit dem Sie arbeiten möchten
  2. Klicken Sie auf Erweiterte Einstellungen anzeigen und scrollen Sie bis zum Ende der Seite zum Abschnitt "Tastatur"
  3. Aktivieren Sie die Option "Tastatureingabe aktivieren"

[C] API 23

Wenn Sie die Hardware und die Softtastatur verwenden möchten, dann ...

  1. Befolgen Sie die Schritte 1 bis 3 von [B]
  2. Starten Sie auf dem virtuellen Gerät Einstellungen starten und wählen Sie dann Sprache und Eingabe / Aktuelle Tastatur
  3. Hardware aktivieren - Eingabemethode anzeigen

Wenn Sie die Hardwaretastatur nicht benötigen, deaktivieren Sie in den erweiterten AVD-Einstellungen die Option "Tastatureingabe aktivieren". Sie müssen keine Einstellungen auf dem virtuellen Gerät ändern.

[D] APIs 24 und 25

  1. Befolgen Sie die obigen Schritte 1 bis 3 [B] und deaktivieren oder deaktivieren Sie die Option "Tastatureingabe aktivieren", je nachdem, ob Sie die Hardqare-Tastatur aktivieren möchten.
  2. Starten Sie auf dem virtuellen Gerät Einstellungen starten und wählen Sie dann Sprache und Eingabe / Physische Tastatur
  3. Aktivieren Sie "Virtuelle Tastatur anzeigen"

Wenn in der AVD die Option Tastatureingabe aktivieren ausgewählt wurde, können Sie jetzt sowohl harte als auch weiche Tastatureingaben verwenden. Wenn Sie die Option in der AVD deaktiviert haben, wird die Softtastatur unabhängig davon angezeigt.

[E] API 26

Genau wie die [D] APIs 24 und 25, außer dass Sie in den Geräteeinstellungen durch eine zusätzliche Menüebene "System" navigieren müssen, bevor Sie zu Sprache und Eingabe / Physische Tastatur gelangen

Will P.
quelle
1

Möglicherweise unterstützt Ihr Emulator kein Softkeyboard.

Fügen Sie eine Hardwareeigenschaft für die Tastaturunterstützung hinzu und setzen Sie sie für Ihren Emulator auf true.

Wenn es bereits wahr ist, überprüfen Sie diese Antwort.

Niranj Patel
quelle
1

Zeigen:

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);

Und um sich zu verstecken:

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

Probieren Sie es einfach aus ...

FarhaSameer786
quelle
es hat leider nicht geholfen
Andrey Chernukha
InputMethodManager imm = (InputMethodManager) getSystemService (Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput (InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY); ... versuchen Sie dies
FarhaSameer786
@ Andy Chernukha-ich denke, Ihr Emulator unterstützt kein Softkeyboard oder Hardware des Emulators funktioniert nicht richtig .....
FarhaSameer786