2011-05-01 97 views
9

我有一個EditText的活動,我只需要輸入數字。如何禁用特定活動的Android軟鍵盤?

現在,我已經將我的EditText的輸入類型定義爲數字,併爲我的用戶製作了一個漂亮的鍵盤,但是我還需要確保軟鍵盤不會彈出給我的用戶當他們點擊EditText時。

我曾嘗試加入

android:windowSoftInputMode="stateAlwaysHidden" 
在我的清單

的特定活動,通過隱藏清單中的鍵盤,但是這並不適合我,因爲只要對的EditText鍵盤用戶點擊運行再次出現。

我試圖做同樣的程序,像這樣

activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 

但這並不工作。鍵盤出現在用戶點擊EditText時。

奏效被設置的inputType爲空的EditText上像這樣的唯一的事:

EditText.setInputType(InputType.TYPE_NULL); 

但我不能用這個,因爲它將使誰擁有一個鍵盤連接到他們的設備輸入字母和其他用戶EditText字段中的符號,而我希望每個人都只專門使用鍵盤在字段中輸入數據。

我還應該提到,我目前正在測試我的應用程序在android 2.1下,但我希望我的解決方案可以在所有版本中工作。任何幫助,將不勝感激。提前致謝。

回答

6

只是認爲可能擴展EditText並處理通過軟鍵盤的訪問,並遇到this question這對我的問題有一個非常優雅的解決方案。

只要按照這些步驟,這完全爲我處理軟鍵盤。希望它能幫助其他人解決這個問題。

5

無論在哪個Edittext中,您都需要禁用軟鍵盤,在該編輯文本的xml中添加屬性。

<EditText android:id=".." 
      .. 
      android:focusable="false" /> 

它會停止執行軟鍵盤。

+2

你不應該這樣做。如果那是從先前的EditText字段那麼大小寫,那麼單擊Next將不會使該視圖變爲requestFocus。 – lokoko 2013-02-05 07:45:16

3

在清單文件的活動中使用android:windowSoftInputMode="stateHidden"。這將工作。不要使用android:focusable =「false」作爲EditText,除非你不願意輸入文本。如果你想給輸入,然後刪除佈局文件中edittext的屬性。

+0

這似乎不起作用:選擇EditText時,軟鍵盤仍然打開。我相信windowSoftInputMode屬性是爲了控制窗口獲得焦點時的活動行爲,而不是所有的時間。 – personne3000 2013-05-09 08:26:28

+0

這適用於我想要的功能:在活動開始時不顯示軟鍵盤 – adrian4aes 2014-02-04 17:13:37

0

如果使用例如一個ViewGroup它允許您使用此方法來阻止軟鍵盤:

view.setDescendantFocusability(view.FOCUS_BLOCK_DESCENDANTS); 

由於這個視圖之前任一後代將獲得焦點。

0

您可以使用此代碼:

<EditText 
    . 
    . 
    android:enabled="false" 
    android:focusable="false" 
    android:focusableInTouchMode="false" 
    android:inputType="numberPassword" />