我需要允许用户在 EditText 中输入数字信息,但输出的格式需要像“##.###,##”([0..9] 中的#)。我在 TextWatcher 中进行的格式设置......这很好,TextWatcher 完成了这项工作......但是,当用户选择 EditText 时,它标记为文本,如果我选择 EditText 作为数字,则会显示 AlphaKeyboard显示我需要的键盘并且 TextWatcher 停止工作。
问问题
1570 次
4 回答
0
当您在 TextWatcher (##,####....) 中进行格式化时,即在 EditText 中添加“,”并且您已将 EditText 设为数字。如果其为数字,则“,”字符无效。因此它不允许 TextWatcher 更新包含“,”的格式化文本。
您有 3 个选项来处理此问题:
- 使 EditText 正常而不是数字。在 TextWatcher 中寻找除 0-9 之外的任何其他无效字符。当焦点位于 EditText 上时,您可以为 Mumber 键盘显示 IME。
- 对 EditText 使用掩码。
- 让它成为数字。为 EditText 捕获 FocusGain 和 FocusLost。在 focusGain 中,删除格式并将 inputType 设置为 Numeric。& 在 focusLost 中,首先将输入类型设置为 Normal,然后将输入的值更新为格式化值。您可以在运行时使用 & 将输入类型设置为 normal
setInputType(InputType.TYPE_TEXT_VARIATION_NORMAL);
用于数字使用:setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);
我相信第一种选择将是最好的处理和管理。
于 2012-02-03T14:03:54.020 回答
0
将以下内容放入您的xml中所需的edittext
<EditText android:inputType="number" ... />
于 2012-02-03T12:45:07.570 回答
0
您需要像这样更改edittext条目。
<EditText android:inputType="phone" android:numeric="decimal"></EditText>
于 2012-02-03T12:54:32.407 回答
0
使用此代码显示软键盘。
InputMethodManager imm = (InputMethodManager) getSystemService(
Context.INPUT_METHOD_SERVICE);
imm.showSoftInputFromInputMethod(v.getApplicationWindowToken(), 1);
于 2012-02-03T12:59:08.330 回答