【问题标题】:Spelling suggestions give redundant values with android.text.TextWatcher拼写建议使用 android.text.TextWatcher 提供冗余值
【发布时间】:2012-05-18 16:33:16
【问题描述】:

我正在使用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”,我只想拥有“你好”, ””。

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

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

【问题讨论】:

    标签: android android-edittext


    【解决方案1】:

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

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

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

    【讨论】:

    • 或以编程方式:editText.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-30
    • 2011-12-24
    • 2010-12-15
    • 2011-05-11
    • 1970-01-01
    相关资源
    最近更新 更多