2012-02-16 200 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 2012-02-17 09:38:34

+0

它應該可以工作,但是你可以嘗試下面一行: im.showSoftInput(this,InputMethodManager.SHOW_IMPLICIT); – Vikram 2012-02-17 10:48:11

15

即使這個問題幾乎在一年前問它沒有一個公認的和充分有用的答案,因爲我自己遇到了同樣的問題我雖然我會分享我的解決方案:

由於Vikram指出這是顯示軟輸入的方式:

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

還必須設置您的視圖可聚焦和可聚焦聯繫方式:

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

或在您的視圖XML:

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

你如何攔截鍵盤輸入? – bgolson 2013-04-22 22:47:43

+1

你需要更具體些。以哪種方式攔截?您可以重寫View.onKeyDown(int keyCode,KeyEvent事件)。你是這個意思嗎? – britzl 2013-04-24 06:12:10

+0

+1謝謝!這就是我一直在尋找的。 – bgolson 2013-04-24 14:39:26

2

其實,你可以always秀清單中的軟鍵盤輸入。該行添加到您想要顯示的軟鍵盤每個活動:

android:windowSoftInputMode="stateAlwaysVisible" 

軟鍵盤將顯示,無論是否有在視圖中沒有的EditText。 示例:

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

</activity>