2011-01-02 14 views
15

Android'de basit bir yazım oyunu oluşturuyorum. Fiziksel klavyeden giriş yapmakta sorun yaşamadım, ancak şimdi yumuşak klavyeyi EditText olmadan görünmeye çalışıyorum. onCreate() yılındaYazılım tuşunu EditText kullanmadan kullanabilir miyim?

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

2. Bu hat:

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); 
görünürlük = "görünmez" ve bu hat ile

1. EditText: Şimdiye kadar, aşağıdaki denedim

Bu yöntem aslında ekranın alt% 10'unun altında boş bir beyaz kutu görüntülüyordu, ancak klavyeyi değil, şimdi çalıştırdığımda hiçbir şey yapmıyor. onCreate() içinde

3. Başka bir iki hat: Bunlardan herhangi biri ile

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

Resim şans. Yumuşak klavyeyi (ve daha sonra onKeyUp/onKeyDown) bir EditText'e odaklanmaksızın görüntülemek mümkün mü?

Şu anda görebildiğim tek yol, buna yaklaşmak için kendi özel klavye klavyemi oluşturmak (yani, sıfırdan oluşturmak). Bunun için sabırsızlanıyorum!

+0

Yumuşak klavyeyi göstermeyi başarsanız bile, onKeyUp()/Down(), en azından tüm tuşlar için ve tüm Android sürümlerinde aranmaz. Bazı Android (eski) sürümlerinde (bence 1.5 ve belki 1.6) onKeyDown() sayısal tuşlar tarafından çağrılır, ancak harf içermez. Bununla birlikte, genel olarak, yumuşak klavye girişini almak için onKeyDown() kullanımı sizi istenen sonuçlara götürmez - bu yalnızca sabit klavyeler kullanılarak düzgün şekilde çalışır. – ubuntudroid

cevap

2

Sen SoftKeyboard zorlayabilir kullanılarak gösterilecek:

 

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

Hayır, SHOW_FORCED olarak değişiyor.Ayrıca requestFocus() çalıştı; edittext ama bu da işe yaramadı. – ang

+0

çalışmıyor! (android 4.2) –

4

Aşağıdaki kod benim için çalışıyor: Ben "menüsünü bastığımda

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

Bir onKeyUp işleyicisi bu kodu kullanmak " buton.

+1

çalışmıyor! (android 4.2) –

+0

Hala benim için çalışıyor. Ve Android 4.4 de. – miha

+1

Bu durumda belirli bir giriş türünü zorlamak için bir yol var mı? sadece rakamlar gibi .. 'setRawInputType' –

2

görünümünüz için yumuşak klavyeyi etkinleştirmek için emin olun:

setFocusable(true); 
setFocusableInTouchMode(true); 

Sonra çağırır:

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

çalışmıyor olarak ayarlayabilirsiniz! (android 4.2) –

3

Onun yerine, sen EditText üzerinde android:alpha="0" ayarlayabilirsiniz visibility="invisible" kullanmanın. Demek hala bir EditText gerekir ama görünmüyorsa ve size manzara modunda çalışıyorsanız, yumuşak girdi tüm mahvediyor kendi metin giriş alanını oluşturacağını bir onKeyListener()

0

Note SoftKeyboard giriş alabilirsiniz senin sıkı çalışman. Şimdi başardın gibi kalacak görünmez bir EditText kurduysanız

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

: Bu davranışı önleyebilir.

İlgili konular