Android系统。 EditText动态更改输入类型问题

时间:2016-11-15 07:40:36

标签: android input android-edittext autosuggest android-inputtype

我有一个用于搜索电话号码的editText。它会自动在两种模式之间切换:

  • 直接输入电话号码+7(900)000-00-00
  • 搜索联系方式

因此,要做到这一点,必须在用户输入文本时动态更改editText输入类型,遵循以下规则:

  1. 当编辑为空时:INPUT_NO_SUGGEST
  2. 当用户输入电话号码时:INPUT_NO_SUGGEST
  3. 当用户输入其他内容时:INPUT_TEXT
  4. 输入带有建议的文字时会出现问题:

    • 当我输入可以 - >然后点击建议 Cam 它清除( left gif
    • 当我输入可以 - >然后点击建议不能它按预期工作(右gif

    suggest-wrong suggest-ok

    在第一种情况下,我们更改单词'Can' - >'Cam',它的工作原理错误 在第二种情况下,我们补充单词'Can' - >'Can not'并且它可以正常运行

    textWatcher中的代码:

    private static final int INPUT_TEXT = InputType.TYPE_CLASS_TEXT;
    private static final int INPUT_NO_SUGGEST = InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS;
    ...
    public void afterTextChanged(Editable s) {
        boolean isPhone = isPhoneNumber(s);
        int inputType;
        if (s.length() == 0) {
            inputType = INPUT_NO_SUGGEST;
        } else {
            if (isPhone) {
                inputType = INPUT_NO_SUGGEST; 
            } else {
                inputType = INPUT_TEXT;
            }
        }
        editText.setInputType(inputType);
    }
    

    有任何想法如何解决?

0 个答案:

没有答案