Android如何使用InputType =“text”的EditText显示数字软键盘

时间:2012-02-03 12:41:55

标签: android android-edittext soft-keyboard

我需要允许用户在EditText中输入数字信息,但输出需要格式化为“##。###,##”(#in [0..9])。我在TextWatcher中进行格式化...这很好,TextWatcher完成工作... bute,当用户选择EditText时,因为它标记为文本,所以显示AlphaKeyboard,如果我选择EditText作为数字显示我需要的键盘,TextWatcher停止工作。

4 个答案:

答案 0 :(得分:0)

将xx中的以下内容放在所需的edittext

<EditText android:inputType="number" ... />

参考 How do I show the number keyboard on an EditText in android?

答案 1 :(得分:0)

您需要像这样更改edittext条目。

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

答案 2 :(得分:0)

使用此代码显示软键盘。

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

答案 3 :(得分:0)

在TextWatcher(##,#### ....)中进行格式化时,即在EditText中添加“,”,并将EditText设为数字。如果是数字,则“,”char无效。因此,它不允许TextWatcher更新包含',“。

的格式化文本

您有3个选项可以解决此问题:

  1. 使EditText正常而不是数字。在TextWatcher中,请注意除0-9之外的任何其他无效字符。当焦点在EditText上时,您可以显示IME for Mumber键盘。
  2. 使用Mask for EditText。
  3. 让它成为数字。 Trap FocusGain&amp; FocusLost用于EditText。在focusGain中,删除格式&amp;将inputType设置为Numeric。 &安培;在focusLost中,首先将输入类型设置为Normal,然后将输入的值更新为formmated值。您可以使用setInputType(InputType.TYPE_TEXT_VARIATION_NORMAL);&amp;运行时在运行时将输入类型设置为正常。数字用途:setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);
  4. 我相信第一个选项最适合处理和管理。