1

我看到我认为使用带有 inputType=numberDecimal 的 EditText 的奇怪行为。

在我的 Galaxy Nexus(使用 Google 键盘)上,当我点击 editText 字段时,通常会出现下划线:

在此处输入图像描述

它几乎看起来可以是自动更正、自动完成或文本建议,但这对于 numberDecimal 输入类型没有意义。我已经尝试过 textNoSuggestions 并且正如预期的那样,这并没有删除下划线。

如果存在,这些下划线目前正在给我带来问题。我在editText上附加了一个textwatcher作为侦听器。点击该字段后,只要出现此下划线并且光标位于屏幕截图中:

  1. 当用户输入 2 时,onTextChanged 收到:0.002。这是对的。然后我在 afterTextChanged 中将此数字格式化为 0.02。

  2. 此时如果用户输入 3,onTextChanged 会收到:0.020023。这是不正确的。出于某种原因,“002”被附加到 3 之前的 editText 值中。这显然会抛出我在 afterTextChanged 中的格式化逻辑。

我的 textwatcher 逻辑已经工作了很长时间,直到最近才开始出现这个问题。每当我移动光标时,使下划线消失,然后我看不到 onTextChanged 接收“不正确”值的问题。

至于使下划线开始发生的变化,我相信我已将其范围缩小到 Google 键盘应用程序。当我使用 Google 键盘版本 1.1.1881.801980 时,我看到了这个问题。我卸载了更新并回滚到版本 4.2.2-573038,并且在该版本中,从来没有任何下划线,因此我的 textwatcher 没有问题。

所以,我的问题:

有谁知道这个下划线在 numberDecimal 字段中应该是什么?这是合法的还是这是一个错误?

错误与否,有人知道如何防止用户点击该字段时出现此下划线吗?

4

4 回答 4

1

我有一个非常相似的问题。每当我得到带下划线的文本时,我的文本侦听器就会得到 onTextChanged 中 CharSequence 的意外值。

于 2013-09-30T19:52:59.907 回答
0

此问题已通过 Google 键盘应用程序版本 2.0.18933.905102a 的最新更新得到修复。

于 2013-11-14T13:17:31.063 回答
0

  android:inputType="textNoSuggestions"
于 2013-09-24T11:39:14.110 回答
0

我认为这是一个错误,即使在 EditText 上调用了 setText 之后,键盘也会记住旧输入的状态。我使用以下代码修复了它以重置状态。

InputMethodManager mgr = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);

mgr.restartInput(editText);
于 2013-10-24T16:21:59.357 回答