2012-02-16 10 views
10

私の目標は、あるイベントでスクリーン上のソフトウェアキーボードを表示/非表示にし、そのキーボードからの入力を傍受することです。EditTextなしでソフトウェアキーボードを表示

私は、一部のViewクラスの子孫のためにソフトキーボードが表示できることを知りましたが、スクリーン上にテキスト編集ウィジェットを視覚的に表示する必要はありません。

これを達成する最も良い方法は何ですか?

答えて

3

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

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

をして非表示にする:

((InputMethodManager) YourActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(findViewById(R.id.YOUR_VIEW).getWindowToken(), 0); 
+0

この方法は機能しませんでした。 showSoftInputはfalseを返し、キーボードは表示されません。 – Nekuromento

+0

これは動作するはずですが、次の行を試すことができます。 im.showSoftInput(this、InputMethodManager.SHOW_IMPLICIT); – Vikram

15

この質問はほぼ一年前に頼まれた場合でも、それは受け入れられたがありませんでしたそして私は同じ問題に直面していたので、私は私の解決策を共有しました:

これはソフト入力を表示する方法です:

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

しかし、あなたはまた、タッチモードでフォーカス可能とフォーカス可能など、あなたのビューを設定する必要があり:実は

android:focusable = "true" 
android:focusableInTouchMode = "true" 
+0

キーボード入力をどのように傍受しますか? – bgolson

+1

少し具体的にする必要があります。どのように傍受? View.onKeyDown(int keyCode、KeyEventイベント)をオーバーライドできます。それはあなたが意味することですか? – britzl

+0

+1ありがとうございます!それが私が探していたものです。 – bgolson

2

、次のことができalwaysショー:

myView.setFocusable(true); 
myView.setFocusableInTouchMode(true); 

またはビューのXMLで

マニフェストからのソフトキーボード入力。あなたは、ソフトキーボードを表示したい各アクティビティに次の行を追加します。ビューにはのEditTextがありません場合

android:windowSoftInputMode="stateAlwaysVisible" 

ソフトキーボードは関係なく表示されます。 例:

<activity android:name=".ChatActivity" 
    android:windowSoftInputMode="stateAlwaysVisible"> 

</activity> 
関連する問題