我看到我认为使用带有inputType = numberDecimal的EditText的奇怪行为。
在我的Galaxy Nexus上(使用Google键盘),当我点击editText字段时,通常会出现下划线:
它看起来几乎可以是自动更正,自动完成或文本建议,但这对于numberDecimal输入类型没有意义。我已经尝试过textNoSuggestions,并且正如预期的那样,这并没有删除下划线。
如果存在,这些下划线目前正在引起我的问题。我在editText上附加了一个textwatcher作为监听器。点击该字段后,只要存在此下划线并且光标位于屏幕截图中:
当用户输入2时,onTextChanged收到:0.002。这是对的。然后我在afterTextChanged中将此数字格式化为0.02。
此时如果用户输入3,onTextChanged收到:0.020023。这是不正确的。由于某种原因,“002”被附加到3.之前的editText值。这显然会在afterTextChanged中抛弃我的格式化逻辑。
我的textwatcher逻辑已经工作了很长时间,并且最近才开始出现这个问题。任何时候我移动光标,使下划线消失,然后我发现onTextChanged没有收到“错误”值的问题。
至于改变使这个下划线开始发生的变化,我相信我已经缩小到谷歌键盘应用程序。当我使用Google键盘版本1.1.1881.801980时,我看到了这个问题。我卸载了更新并回滚到版本4.2.2-573038,并且在该版本中没有任何下划线,因此我的textwatcher没有问题。
所以,我的问题:
有没有人知道这个下划线应该在numberDecimal字段中是什么?这是合法的还是这个错误?
是否有错误,是否有人知道当用户使用该字段时如何防止此下划线出现?
答案 0 :(得分:1)
我有一个非常类似的问题。每当我得到带下划线的文本时,我的文本监听器就会在onTextChanged中获得CharSequence的意外值。
答案 1 :(得分:0)
设置
android:inputType="textNoSuggestions"
答案 2 :(得分:0)
我认为即使在EditText上调用了setText之后,这也是键盘记住旧输入状态的错误。我使用以下代码修复它以重置状态。
InputMethodManager mgr = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.restartInput(editText);
答案 3 :(得分:0)
此问题已通过Google键盘应用版本2.0.18933.905102a的最新更新修复。