10

我正在使用android.text.TextWatcher界面来收听我的一个应用程序中 EditText 的更改。我使用 beforeTextChanged() 和 onTextChanged() 监视更改以允许撤消选项。

通常,更改一次发生一个字符,例如,如果用户键入“hello”,我将获得以下值作为 beforeTextChanged() 方法的 start、after 和 count 值:

start = 0; count = 0; after = 1;      // typed 'h'
start = 1; count = 0; after = 1;      // typed 'e' 
start = 2; count = 0; after = 1;      // typed 'l'
start = 3; count = 0; after = 1;      // typed 'l'
start = 4; count = 0; after = 1;      // typed 'o'

现在,在 ICS / Samsung Galaxy Nexus 上,拼写建议处于活动状态,当我键入相同的文本时,该单词在 EditText 中带有下划线,直到我插入一个空格并得到以下结果:

start = 0; count = 0; after = 1;      // typed 'h'
start = 0; count = 1; after = 2;      // typed 'e'
start = 0; count = 2; after = 3;      // typed 'l'
start = 0; count = 3; after = 4;      // typed 'l'
start = 0; count = 4; after = 5;      // typed 'o'

根据文档,后一种行为被视为“用户输入了一个 1 个字母的单词,然后删除它并输入了一个 2 个字母的单词,然后删除了它并输入了一个 3 个字母的单词,依此类推……”。当我在 EditText 上执行撤消操作时,我得到“hello”、“”、“hell”、“”、“hel”、“”、“he”、“”、“h”,我只想拥有“你好”, ””。

有没有办法阻止拼写建议给出这些值。恕我直言,这违反了方法文档中给出的合同。

如果没有,有没有办法阻止对我的编辑文本的建议?

4

1 回答 1

5

您可以很容易地阻止建议:

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

我确信这适用于所有 ICS 设备。我相信该字段在旧设备上不可用,但在不应该成为问题的情况下。

于 2012-05-28T05:42:52.063 回答