如何在 EditText 中显示来自输入法的建议?

How to show suggest from input methods in an EditText?

我没有实现输入法,而是试图在我的应用程序中获取输入状态。当我们使用9键模式时,输入1~9会有一些提示。在iOS中使用默认输入法时提示会在EditText之前选择任何提示。不知道android能不能达到同样的效果

例如,我打算输入"good",所以我需要输入4663。 首先我输入 4,建议给我 "h",选择是 "hi"、"in"、"I"、"IT" 等等。 然后我输入 6,建议给我 "in",选择是 "in, gmail, iOS" 等等。 然后输入6,建议是"goo",选择是"good, home, honey"。 最后输入3,建议是"good",选择是"good, home, honey".

我想要的是EditText中的提示。如果我输入“466”,我在 EditText.

中有 "goo"

我浏览了InputMethodManager API 和相关的源代码,什么也没找到。我只能用getInputMethodList()的方法得到InputMethodInfo。但我不知道如何让 InputMethodService 使用 InputMethodInfo。而且我也不知道 API 我可以从 InputMethodService 得到建议(我想我可以从 InputMethodService 得到它)。在 Android 中可以做这样的事情吗?如果不是,为什么?

不增加新的输入法是不行的。客户端应用程序无法获取输入法获取的内容。您只能确定您使用的输入法,但永远无法获得它的实例。

KeyEvent.java中它甚至说,"You should never rely on receiving KeyEvents for any key on a soft input method. In particular, the default software keyboard will never send any key event to any application targetting Jelly Bean or later, and will only send events for some presses of the delete and return keys to applications targetting Ice Cream Sandwich or earlier. Be aware that other software input methods may never send key events regardless of the version."

这可能有帮助

private TextWatcher tw = new TextWatcher() {
    public void afterTextChanged(Editable s){

    }
    public void  beforeTextChanged(CharSequence s, int start, int count, int after){
      // you can check for enter key here
    }
    public void  onTextChanged (CharSequence s, int start, int before,int count) {
    } 
};

EditText et = (EditText) findViewById(R.id.YOUR_EDITTEXT_ID);
et.addTextchangedListener(tw);