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

时间:2015-03-04 07:24:32

标签: android android-input-method

我没有实现输入法,而是尝试在我的应用中获取输入状态。当我们使用9键模式时,键入1~9并会有一些提示。在您选择任何建议之前,在iOS中使用默认输入法时,提示将位于EditText。我想知道android是否可以获得同样的效果。

例如,我打算键入" good",所以我需要键入4663。 首先我输入4,建议给我" h"选择是" hi"," in"," I"," IT"等等。 然后我键入6,建议给我"在"和选择是" in,gmail,iOS"等等。 然后键入6,建议是" goo",选择是"好,家,蜂蜜"。 最后类型3,建议是"好"和选择是好的,家庭的,亲爱的"。

我想要的是在EditText中提示。如果我输入" 466",我有" goo"在EditText

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

2 个答案:

答案 0 :(得分:0)

如果不添加新的输入法,这是不可能的。客户端应用无法获得输入法获得的内容。您只能确定您正在使用的输入法,但永远无法获得它的实例。

KeyEvent.java 中,它甚至会说,"您不应该依赖于在软输入法上接收任何键的KeyEvent。特别是,默认软件键盘永远不会向任何针对Jelly Bean或更高版本的应用程序发送任何键事件,并且只会将删除和返回键的某些按键发送给目标为Ice Cream Sandwich或更早版本的应用程序。请注意,无论版本如何,其他软件输入方法都可能永远不会发送关键事件。"

答案 1 :(得分:0)

这可能会有所帮助

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);