La tastiera virtuale di Android non viene mai visualizzata nell'emulatore


86

Sono nuovo su Android. Ho già passato due ore a cercare. Qualunque cosa provi, la softkeyboard non viene mai mostrata per il mio file EditText. Lo creo semplicemente:

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

Provai:

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

e:

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

         }
     });

ho anche provato:

getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);

ho provato a inserire questa riga nel AndroidManifest.xmlfile:

 android:windowSoftInputMode="stateVisible|adjustResize"

ma tutto invano. Semplicemente non si mostra mai. Cosa mi manca?


si apre la tastiera in un'altra applicazione?
Niranj Patel

prova questo sostituisci imm.showSoftInput (editText, InputMethodManager.SHOW_IMPLICIT); questo a imm.toggleSoftInput (InputMethodManager.SHOW_FORCED, 0);
Aravin

@ CapDroid no, sfortunatamente. ho provato in un'altra applicazione ma ancora senza fortuna
Andrey Chernukha

@Aravinth continua a non funzionare
Andrey Chernukha

Stai usando un emulatore o un dispositivo.
Aravin

Risposte:


211

Devi assicurarti che il tuo emulatore non sia impostato per utilizzare una tastiera hardware . Questo può essere fatto scegliendo Editsu un emulatore selezionato nell'AVD. Quindi deseleziona l' Hardware keyboard presentimpostazione.

Puoi anche provare a utilizzare un emulatore diverso, come Genmony . Supporta l'accelerazione hardware completa (CPU multi-core e GPU) e funziona molto più velocemente di qualsiasi immagine dell'emulatore Android. Se usi Genmony dovrai disabilitare la tastiera hardware all'interno di Android (vedi sotto per i dettagli).

Per disabilitare la tastiera hardware in Genmony:
vai su Settings-> Language & inpute apri l' Defaultelemento sotto Keyboard & Input Methods. C'è Hardwareun'impostazione che puoi attivare / disattivare. Quando è attiva , usi la tua tastiera fisica e quando è spenta la tastiera standard dovrebbe comparire ogni volta che un campo di testo diventa attivo.

Screenshot per le impostazioni di Gen targ: Elemento predefinito

inserisci qui la descrizione dell'immagine


4
Infine! Grazie mille. Vorrei poter votare due volte la tua risposta. Per quanto riguarda Genmony, ho passato una giornata a provare a configurarlo ma non ha funzionato. Non potevo nemmeno scrivere al loro supporto
Andrey Chernukha

Felice di aiutare :) Per quanto riguarda Genmony, sono in costante miglioramento, ma è ancora in anteprima / beta. Tuttavia, da quando ho iniziato a usarlo non ho avuto un solo problema. Potrebbe essere che ho appena iniziato una volta che hanno risolto la maggior parte dei problemi - o sono solo fortunato :). Detto questo, gli emulatori Android offrono più variazioni, quindi li uso ancora per testare la compatibilità.
free3dom

Fantastico, ora ho la tastiera virtuale! Ma ho un EditText con android: inputType = "numberDecimal"> e virtualkeyboard non scrive numeri (li scrive solo se scrivo una lettera prima di loro). Il controllo ortografico è già disattivato ...
Michele

Dai un'occhiata qui per le possibili soluzioni.
free3dom

@ free3dom ~ "apri l'elemento predefinito in Tastiera e metodi di input" Cos'è? Non vedo quell'oggetto.
IgorGanapolsky

73

Nella versione 2.1.1, fai clic sulle impostazioni del tuo dispositivo virtuale, quindi seleziona la casella di controllo "usa la tastiera virtuale per digitare". inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine


2

Ci sono due posti per deselezionare la tastiera hardware in AS 1.1.0. Questo non è sufficiente:

inserisci qui la descrizione dell'immagine

Devi farlo (fai clic Tools | Android | AVD Manager; quindi crea nuovo o modifica il vecchio AVD e quindi fai clic Show Advanced Settings; scorri verso il basso e cancella Enable keyboard input):

inserisci qui la descrizione dell'immagine


Ho passato del tempo a trovare questa soluzione perché l'indicatore di scorrimento è normalmente scomparso e viene visualizzato solo quando inizi a scorrere. Suggerirei che se una vista è scorrevole per avere qualche indicazione di tale possibilità visivamente.
GregM

Non funziona per me in Android Studio. Deseleziono "Abilita input da tastiera" ma l'emulatore NON mostra ancora la tastiera del software.
Evgenii

Hai menzionato solo uno "deseleziona". L'altro è "Ha una tastiera hardware", come mostrato - e probabilmente l'hai già cancellato. Forse provare un altro dispositivo virtuale? Ho trovato l'emulatore AS piuttosto difficile da tollerare. Lento da caricare, stranezze come questa .... Buona fortuna.
DSlomer64

2

Il metodo per abilitare la tastiera virtuale su schermo per gli emulatori Android Studio 2+ dipende dal livello API dell'emulatore. Ho testato i vari metodi a partire dall'API 15 e ho registrato i passaggi seguenti.

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

I passaggi seguenti abiliteranno la tastiera virtuale su schermo ma disabiliteranno la possibilità di inserire testo e interagire con l'AVD utilizzando la tastiera del computer hardware.

  1. In Android Virtual Device Manager (AVD), fai clic sull'azione di modifica per il dispositivo con cui desideri lavorare
  2. Fai clic su Mostra impostazioni avanzate e scorri verso il basso fino alla fine della pagina fino alla sezione "Tastiera"
  3. Deseleziona l'opzione "Abilita input da tastiera"

[B] API 22

La tastiera virtuale viene visualizzata indipendentemente da ciò che si fa con le impostazioni della tastiera hardware. Se desideri abilitare il supporto della tastiera hardware insieme alla tastiera morbida,

  1. In AVD, fai clic sull'azione di modifica per il dispositivo con cui desideri lavorare
  2. Fai clic su Mostra impostazioni avanzate e scorri verso il basso fino alla fine della pagina fino alla sezione "Tastiera"
  3. Seleziona l'opzione "Abilita input da tastiera"

[C] API 23

Se desideri utilizzare l'hardware e la tastiera virtuale, allora ...

  1. Segui i passaggi [B] da 1 a 3
  2. Sul dispositivo virtuale, avvia Impostazioni, quindi seleziona Lingua e input / Tastiera corrente
  3. Abilita hardware: mostra il metodo di input

Se non hai bisogno della tastiera hardware, nelle impostazioni avanzate di AVD, deseleziona l'opzione "Abilita input da tastiera". Non sarà necessario modificare le impostazioni sul dispositivo virtuale.

[D] API 24 e 25

  1. Segui i passaggi [B] da 1 a 3 sopra, selezionando o deselezionando l'opzione "Abilita input da tastiera" a seconda che tu voglia abilitare la tastiera hardqare.
  2. Sul dispositivo virtuale, avvia Impostazioni, quindi seleziona Lingua e input / Tastiera fisica
  3. Abilita "Mostra tastiera virtuale"

Se nell'AVD è stata selezionata l'opzione Abilita input da tastiera, sarà ora possibile utilizzare input da tastiera sia hard che soft. Se hai deselezionato l'opzione nell'AVD, la tastiera virtuale verrà visualizzata indipendentemente.

[E] API 26

Esattamente come le API [D] 24 e 25 tranne per il fatto che è necessario navigare attraverso un livello di menu "Sistema" aggiuntivo nelle impostazioni del dispositivo prima di accedere a Lingua e input / Tastiera fisica


1

Può essere che il tuo emulatore non supporti la tastiera virtuale ..

Aggiungi una proprietà hardware Supporto tastiera e impostala su true per il tuo emulatore.

Se è già vero, controlla questa risposta.


1

Mostrare:

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

E per nascondere:

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

Prova questo ...


sfortunatamente non ha aiutato
Andrey Chernukha

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

@Andrey Chernukha-penso che il tuo emulatore non supporti la tastiera o l'hardware dell'emulatore non funziona correttamente .....
FarhaSameer786
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.