我没有实现输入法,而是尝试在我的应用中获取输入状态。当我们使用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中可以做这样的事吗?如果没有,为什么?
答案 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);