2011-01-02 6 views
15

私はAndroidで簡単なタイピングゲームを作成しています。私は物理的なキーボードからの入力を得るのに問題はないが、今はEditTextなしでソフトキーボードを表示しようとしている。これまでのところ、私は次のことを試してみた:onCreate()EditTextなしでソフトキーボードを使用できますか?

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

2.この行::視界= "見えない" と、このラインと

1.のEditText

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); 

このメソッドは実際には画面の下部10%に空白のボックスを表示しましたが、キーボードは表示しませんでしたが、実行すると何もしません。 onCreate()

3.別の2行:これらのいずれかに

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

ありません運。 EditTextに焦点を当てずに、ソフトキーボードを表示して(onKeyUp/onKeyDown)使用することも可能ですか?

私が見ることができる唯一の方法は、ソフトキーボードの独自の実装を作成することです(つまり、ゼロから構築する)ことです。それを楽しみにしていない!

 

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

ソフトキーボードの表示を管理してもonKeyUp()/ Down()は呼び出されません。少なくともすべてのキーとすべてのAndroidバージョンで呼び出されるわけではありません。一部のAndroid(旧バージョン)では、onKeyDown()は数字キーによって呼び出されますが、文字はありません。それにもかかわらず、一般的に、ソフトキーボード入力を受け取るためにonKeyDown()を使用しても、望む結果には導かれません。これは、ハードキーボードを使用すると正しく機能します。 – ubuntudroid

答えて

2

あなたは使用することによって示されなければSoftkeyboardを強制することができ

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

私は「メニューキーを押したときに、私はonKeyUpをハンドラーにこのコードを使用します"ボタンをクリックします。

+0

SHOW_FORCEDに変更する必要はありません。また、試したrequestFocus(); edittextでは、それはどちらもうまくいきませんでした。 – ang

+0

は機能しません! (アンドロイド4.2) –

4

を次のコードは、私の作品:

+1

は機能しません! (アンドロイド4.2) –

+0

それはまだ私のために働く。 Android 4.4でも。 – miha

+1

そのような場合に特定のタイプの入力を強制する方法はありますか? 'setRawInputType'の代わりに数字だけを使ってください。 –

2

ビューのためのソフトキーボードを有効にしてください:

setFocusable(true); 
setFocusableInTouchMode(true); 

次に呼び出し:

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

が動作していないので、imeTypeをdescriberとして設定することができます。 (アンドロイド4.2) –

3

代わりのvisibility="invisible"を使用して、あなたのEditTextにandroid:alpha="0"を設定することができます。 だから、あなたがまだのEditTextを必要とするが、それが表示されていないとあなたは横長モードで作業している場合、ソフト入力は、すべて台無しに独自のテキスト入力フィールドを作成することをonKeyListener()

0

注によりsoftkeyboardからの入力を取得することができますあなたの努力。今、あなたはあなたがそれを作ったとして、それは目に見えないままのEditTextを設定している場合

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

:あなたはこの動作を防ぐことができます。

関連する問題