我正在使用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”,我只想拥有“你好”, ””。
有没有办法阻止拼写建议给出这些值。恕我直言,这违反了方法文档中给出的合同。
如果没有,有没有办法阻止对我的编辑文本的建议?