2012-02-03 101 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

相关问题