2012-02-03 158 views
2

我需要在EditText中允許用戶輸入數字信息,但輸出需要格式化爲「##。###,##」(#在[0..9]中)。我在TextWatcher中進行了格式化......這很好,TextWatcher執行作業... bute,當用戶選擇EditText時,它標記爲文本,顯示AlphaKeyboard,如果我選擇EditText作爲數字顯示我需要的鍵盤,TextWatcher停止工作。Android如何使用EditText顯示數字軟鍵盤InputType =「text」

回答

0

你需要改變這樣的EditText條目。

<EditText android:inputType="phone" android:numeric="decimal"></EditText> 
0

使用此代碼顯示軟鍵盤。

InputMethodManager imm = (InputMethodManager) getSystemService(
     Context.INPUT_METHOD_SERVICE); 
    imm.showSoftInputFromInputMethod(v.getApplicationWindowToken(), 1); 
0

當你正在做TextWatcher格式(##,#### ....),即要添加「」中的EditText和您所做的EditText上的數字。如果它的數字那麼「,」char是無效的。因此它不允許TextWatcher更新包含」格式化文本,「

你有3種選擇來解決這個問題:

  1. 充分利用的EditText正常的,而不是數字在TextWatcher看出來的比0-9以外的任何其他無效字符,可以顯示輸入法編輯器Mumber鍵盤當焦點在的EditText。
  2. 使用面膜進行的EditText。
  3. 讓它成爲數字。陷阱FocusGain & FocusLost的EditText上。在focusGain,刪除格式&將inputType設置爲Nu聚體。 &在focusLost中,首先將輸入類型設置爲Normal,然後將輸入的值更新爲Formulate值。您可以在運行時使用setInputType(InputType.TYPE_TEXT_VARIATION_NORMAL); &爲數字使用輸入類型設置爲正常:setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);

我相信第一種選擇將是最好的處理和管理的。

+0

您好@Tvd,感謝您的回覆,我做了第一條建議,正如我在我的問題中所描述的那樣,但是當EditText獲得焦點時,我不嘗試更改InputType ...您能否解釋有關MASK的問題? – nonickh 2012-02-03 19:45:08

+0

@nonickh,對於Mask,你可以使用InputFilter - 如何使用:http://itdumka.com.ua/index.php?cmd=shownode&node=32 InputFilter -http://developer.android.com/reference/android /text/InputFilter.html。 – Tvd 2012-02-04 14:21:53

相關問題