Android yazılım klavyesi emülatörde asla görünmez


86

Android'de yeniyim. Aramak için zaten iki saat geçirdim. Yazılım klavyesini denediğim şey asla benim için gösterilmez EditText. Ben basitçe yaratıyorum:

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

Denedim:

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

ve:

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

         }
     });

ben de denedim:

getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);

bu satırı AndroidManifest.xmldosyaya koymayı denedim :

 android:windowSoftInputMode="stateVisible|adjustResize"

ama hepsi boşuna. Hiç görünmüyor. Neyi kaçırıyorum?


klavye başka bir uygulamada açılıyor mu?
Niranj Patel

imm.showSoftInput (editText, InputMethodManager.SHOW_IMPLICIT) yerine bunu deneyin; bunu imm.toggleSoftInput (InputMethodManager.SHOW_FORCED, 0);
Aravin

@CapDroid hayır, maalesef. başka bir uygulamada denedim ama hala şansım yok
Andrey Chernukha

@Aravinth hala çalışmıyor
Andrey

Emülatör mü yoksa cihaz mı kullanıyorsunuz?
Aravin

Yanıtlar:


211

Emülatörünüzün bir donanım klavyesi kullanacak şekilde ayarlanmadığından emin olmanız gerekir . Bu Edit, AVD'de seçilen bir emülatör seçilerek yapılabilir . Sonra işaretini kaldırınHardware keyboard present ayarı.

Genymotion gibi farklı bir emülatör kullanmayı da deneyebilirsiniz . Tam donanım hızlandırmayı (çok çekirdekli CPU ve GPU) destekler ve herhangi bir android emülatör görüntüsünden çok daha hızlı çalışır. Genymotion kullanıyorsanız, Android'de donanım klavyesini devre dışı bırakmanız gerekecektir (ayrıntılar için aşağıya bakın).

Devre dışı donanım klavyesi için Genymotion içinde:
Go için Settings-> Language & inputve açılırDefault altındaki öğeyi Keyboard & Input Methods. HardwareAçıp kapatabileceğiniz bir ayar var. O olduğu zaman üzerinde size fiziksel bir klavye kullanmak ve o zaman kapalı standart yumuşak klavyesi açılır gereken bir metin alanı odağı gelse.

Genymotion ayarları için ekran görüntüleri: Varsayılan Öğe

görüntü açıklamasını buraya girin


4
En sonunda! Çok teşekkür ederim. Keşke cevabınızı iki kez yükseltebilseydim. Genymotion'a gelince - bir gün onu kurmaya çalışırken harcadım ama işe yaramadı. Desteklerine bile yazamadım
Andrey Chernukha

Yardımcı olmaktan memnunum :) Genymotion'a gelince, sürekli gelişiyorlar, ancak hala önizleme / beta. Ancak kullanmaya başladığımdan beri tek bir problemim olmadı. Sorunların çoğunu çözdükten sonra yeni başlamış olabilirim - ya da sadece şanslıyım :). Bununla birlikte, android emülatörleri daha fazla varyasyon veriyor, bu yüzden hala uyumluluğu test etmek için kullanıyorum.
free3dom

Bu harika, şimdi sanal klavyem var! Ama android: inputType = "numberDecimal"> içeren bir EditText'im var ve virtualkeyboard sayı yazmıyor (sadece onlardan önce bir harf yazarsam onları yazıyor). Yazım denetleyici zaten kapalı ...
Michele

Olası çözümler için buraya bir göz atın .
free3dom

@ free3dom ~ "Klavye ve Giriş Yöntemleri altındaki Varsayılan öğeyi açın" Bu nedir? O öğeyi görmüyorum.
IgorGanapolsky

73

2.1.1 sürümünde - sanal cihaz ayarlarınıza tıklayın - ardından "yazmak için sanal klavyeyi kullan" onay kutusunu seçin. görüntü açıklamasını buraya girin

görüntü açıklamasını buraya girin


2

AS 1.1.0'da donanım klavyesinin seçimini kaldırmak için iki yer vardır. Bu yeterli değil:

görüntü açıklamasını buraya girin

Bunu yapmalısınız (tıklayın Tools | Android | AVD Manager; ardından yeni AVD oluşturun veya eski AVD'yi düzenleyin ve ardından tıklayın Show Advanced Settings; aşağı kaydırın ve temizleyin Enable keyboard input):

görüntü açıklamasını buraya girin


Bu çözümü bulmak için zaman harcadım çünkü kaydırma göstergesi normalde kayboldu ve yalnızca kaydırmaya başladığınızda görünüyor. Bir görünüm kaydırılabilirse, bu olasılığın görsel olarak bazı göstergelerine sahip olmasını tavsiye ederim.
GregM

Android Studio'da benim için çalışmıyor. "Klavye girişini etkinleştir" seçeneğinin işaretini kaldırıyorum ancak emülatör hala yazılım klavyesini GÖSTERMİYOR.
Evgenii

Sadece bir "işareti kaldır" dan bahsettiniz. Diğeri, gösterildiği gibi "donanım klavyesine sahiptir" - ve muhtemelen onu zaten temizlediniz. Belki farklı bir sanal cihaz deneyin? AS emülatörünü tolere etmek oldukça zor buldum. Yüklemesi yavaş, bunun gibi tuhaflıklar .... İyi şanslar.
DSlomer64

2

Android Studio 2+ Emülatörleri için ekran üstü yazılım klavyesini etkinleştirme yöntemi, emülatörün API düzeyine bağlıdır. API 15'ten başlayarak çeşitli yöntemleri test ettim ve aşağıdaki adımları kaydettim.

[A] API'ler 15, 17, 19 ve 21.

Aşağıdaki adımlar ekran üstü yumuşak klavyeyi etkinleştirecek, ancak metin girme ve donanım bilgisayar klavyesini kullanarak AVD ile etkileşim kurma özelliğini devre dışı bırakacaktır.

  1. Android Virtual Device Manager'da (AVD), çalışmak istediğiniz cihaz için düzenleme eylemini tıklayın.
  2. Gelişmiş Ayarları Göster'i tıklayın ve sayfanın en altına, "Klavye" bölümüne gidin
  3. "Klavye girişini etkinleştir" seçeneğinin işaretini kaldırın

[B] API 22

Yazılım klavyesi, donanım klavye ayarlarıyla ne yaparsanız yapın görüntülenir. Yazılım klavyesinin yanında donanım klavye desteğini etkinleştirmek isterseniz,

  1. AVD'de, çalışmak istediğiniz cihaz için düzenleme eylemine tıklayın
  2. Gelişmiş Ayarları Göster'i tıklayın ve sayfanın en altına, "Klavye" bölümüne gidin
  3. "Klavye girişini etkinleştir" seçeneğini işaretleyin

[C] API 23

Donanım ve yazılım klavyesini kullanmak isterseniz, o zaman ...

  1. [B] 1'den 3'e kadar olan adımları izleyin
  2. Sanal cihazda, Ayarları Başlatın, ardından Dil'i seçin ve / Mevcut Klavye'yi girin
  3. Donanımı Etkinleştir - Giriş yöntemini göster

Donanım klavyesine ihtiyacınız yoksa, AVD gelişmiş ayarlarında "Klavye girişini etkinleştir" seçeneğinin işaretini kaldırın. Sanal cihazda herhangi bir ayarı değiştirmenize gerek yoktur.

[D] API'ler 24 ve 25

  1. Donanım klavyesini etkinleştirmek isteyip istemediğinize bağlı olarak "Klavye girişini etkinleştir" seçeneğini işaretleyerek veya işaretini kaldırarak yukarıdaki 1 ila 3. adımları izleyin.
  2. Sanal cihazda, Ayarları Başlatın, ardından Dil ve giriş / Fiziksel Klavye öğesini seçin.
  3. "Sanal klavyeyi göster" i etkinleştirin

AVD'de Klavye girişini etkinleştir seçeneği seçildiyse, artık hem sert hem de yumuşak klavye girişlerini kullanabileceksiniz. AVD'deki seçeneğin işaretini kaldırdıysanız, yazılım klavyesi ne olursa olsun görüntülenecektir.

[E] API 26

Dil ve giriş / Fiziksel Klavye'ye ulaşmadan önce cihaz ayarlarında ek bir "Sistem" menüsü düzeyinde gezinmeniz gerekmesi dışında [D] API'ler 24 ve 25 ile tamamen aynıdır.


1

Emülatörünüz yazılım klavyesini desteklemiyor olabilir ..

Klavye desteği donanım özelliği ekleyin ve öykünücünüz için doğru olarak ayarlayın.

Zaten doğruysa, bu yanıtı kontrol edin.


1

Göstermek için:

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

Ve saklamak için:

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

Bunu dene ...


maalesef yardımcı olmadı
Andrey Chernukha

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

@Andrey Chernukha-emülatörünüzün yazılım klavyesini desteklemediğini veya emülatör donanımının düzgün çalışmadığını düşünüyorum .....
FarhaSameer786
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.