我没有实现输入方法,而是试图在我的应用程序中获取输入状态。当我们使用9键模式时,键入1~9,就会有一些提示。当在iOS中使用默认输入法时,提示将在EditText
中选择任何建议。我想知道安卓是否也能得到同样的效果。
例如,我打算键入"good",所以我需要键入4663。首先我输入4,建议给我"h",选择是"hi"、"in"、"I"、"IT"等等。然后我输入6,建议给我"in",选择是"in,gmail,iOS"等等。然后类型6,建议是"goo",选择是"good,home,honey"。最后的第三类,建议是"好",选择是"好,家,亲爱的"。
我想要的是在EditText
中有提示。如果我键入"466",则EditText
中有"goo"。
我浏览了InputMethodManager
API和相关的源代码,没有发现任何内容。我只能使用getInputMethodList()
方法来获得InputMethodInfo
。但我不知道如何使用InputMethodInfo
获得InputMethodService
。而且我也不知道用哪个API可以从InputMethodService
得到建议(我想我可以从InputMethodService得到)。有可能在安卓系统中做这样的事情吗?如果没有,为什么?
如果不添加新的输入法,这是不可能的。客户端应用程序无法获得输入法所获得的内容。你只能确定你使用的是什么输入法,但永远无法获得它的实例
在KeyEvent.java中,它甚至说,"你永远不应该依赖于接收软输入法上任何键的KeyEvents。特别是,默认的软件键盘永远不会向以果冻豆或更高版本为目标的任何应用程序发送任何键事件,并且只会向以冰淇淋三明治或更早版本为目标的应用程序发送某些删除和返回键的事件。请注意,其他软件输入法可能永远不会发送key事件,无论版本如何。"
这可能有助于
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);